Как избежать пробелов в псевдониме bash? - PullRequest
12 голосов
/ 12 октября 2010

Пытался установить псевдонимы в моем файле .bashrc. Этот ...

export alias umusic="/Volumes/180 gram/Uncompressed/"

... получает следующую ошибку ...

-bash: cd: / Volumes / 180: Нет такого файла или каталога

... когда я пытаюсь "cd $ umusic".

Я пробовал различные способы экранирования этого пробела в имени каталога, но безрезультатно. (180 \ грамм, 180% 20грамм, одинарные кавычки, двойные кавычки, без кавычек.) Я понимаю, что самое простое решение - переименовать каталог в «180грамм», но я хотел бы знать, как решить эту конкретную проблему.

Я на Mac, если это что-то меняет.

1 Ответ

18 голосов
/ 12 октября 2010

Использование команды export делает umusic переменную среды , а не псевдоним .Команда export экспортирует переменные среды, названные в остальной части командной строки, при необходимости с новыми значениями.Таким образом, он экспортирует переменную окружения с именем alias (которая, вероятно, не установлена) и переменную с именем umusic.

. При развертывании переменной окружения оболочка выполняет следующую подстановку:

cd $umusic
cd /Volumes/180 gram/Uncompressed/

, которая генерирует ошибку, которую вы получаете, потому что пробел не указан.Если вместо этого вы сделаете:

cd "$umusic"

, тогда расширение будет

cd "/Volumes/180 gram/Uncompressed/"

, что вы ожидаете.

Однако, для этого можно использовать переменную средыпо-прежнему слишком много работы, так как вы должны процитировать расширение.Вместо этого попробуйте этот псевдоним:

alias umusic="cd '/Volumes/180 gram/Uncompressed'"

, который вы будете запускать только с

$ umusic
$ pwd
/Volumes/180 gram/Uncompressed
...