Как получить путь, содержащий пробелы в PATH?

Я пытался

экспортировать TASK=$HOME/Ubuntu\ One и экспортировать TASK="$HOME/Ubuntu One"

, но ни один не работает

7
задан 14 February 2011 в 22:02

5 ответов

Эта страница подробно объясняет проблему. Это хорошая идея, чтобы прочитать ее полностью http://mywiki.wooledge.org/Arguments

0
ответ дан 14 February 2011 в 22:02

Это не определение, с которым у вас возникают проблемы, а его использование. Вам нужно заключать в кавычки всю переменную. Смотрите этот пример:

oli@bert:~/Music$ export B="$HOME/Music/Yeah Yeah Yeahs/"
oli@bert:~/Music$ cd $B
-bash: cd: /home/oli/Music/Yeah: No such file or directory
oli@bert:~/Music$ cd "$B"
oli@bert:~/Music/Yeah Yeah Yeahs$
0
ответ дан 14 February 2011 в 22:02

Это неловкое и неуклюжее поведение является результатом неразумного выбора имени каталога «Ubuntu One» К сожалению, похоже, что нет исправлений , запланированных для этого.

Одним из вариантов является использование Dropbox, который предлагает аналогичные функции.

0
ответ дан 14 February 2011 в 22:02

Вместо того чтобы обращаться к Dropbox, я сделал символическую ссылку:

ln -s Ubuntu\ One UbuntuOne

В моем конкретном случае я хотел импортировать модули Python из каталога в моем облаке:

ln -s Ubuntu\ One/pythonfiles pythonfiles
export PYTHONPATH="$PYTHONPATH:$HOME/pythonfiles/"

Я согласен, глупо ставить пробелы в именах файлов linux.

0
ответ дан 14 February 2011 в 22:02

Попробуйте

export TASK="$HOME/Ubuntu\ One"

В обоих экспортированных вами экспортах, когда вы повторяете $ TASK, результат будет

/home/user/Ubuntu One

Это не ожидаемое поведение, потому что когда вы пишете что-то вроде [ 117]

cp $TASK/file somewhere_else/

bash расширит его до

cp /home/user/Ubuntu One/file somewhere_else/

, что, конечно, неверно.

Таким образом, мы должны поставить наш путь в кавычки, и избежать пробела.

0
ответ дан 14 February 2011 в 22:02

Другие вопросы по тегам:

Похожие вопросы: