Як змінні можуть використовувати "~" для cd'ing?


13

Як я можу використовувати змінну - $BASEу своєму компакт-диску. Я спробував наступне, але я отримав помилку

$ cd ~/z/repo_1_ruby_193/
23:23:57 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 

$ BASE="~/z"
23:24:03 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 

$ cd $BASE/repo_1_ruby_193
-bash: cd: ~/z/repo_1_ruby_193: No such file or directory
23:24:25 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 

Відповіді:


25

У cd ~/z/використанні розширення тильди для розширення ~у вашій домашній директорії. В BASE="~/z", ви не тому, що ви цитували ~персонажа, тому він не розширюється. Ось чому ви отримуєте повідомлення зі скаргами на неіснуючий ~каталог. Рішення полягає в тому, щоб не цитувати його, тобто BASE=~/zдля того, щоб не допустити розширення.


11

@ jw013 дав дійсне пояснення та рішення.

Але можуть бути випадки, коли ви хочете цитувати шляхи, наприклад, коли вони містять кілька пробілів або спеціальних символів. У цьому випадку ви повинні використовувати $HOMEзамість ~, тобто ваш BASE="~/z"стане BASE="$HOME/z"і працювати правильно, тому що підміна параметрів інтерпретується в подвійних лапках, на відміну від розширення tilde.


5
Це один спосіб зробити це, але це не обов'язково. BASE=~/"quoted name"працює просто чудово, доки ~не залишається без котирування.
hvd

4
@hvd: ви насправді також повинні залишати косу рису без котирування. BASE=~/"quoted name"працює, але BASE=~"/quoted name"ні.
Гордон Девіссон

Ти маєш рацію. Хороший улов.
hvd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.