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

7

Я пробовал

export TASK=$HOME/Ubuntu\ One и export TASK="$HOME/Ubuntu One"

, но не работает.     

задан daithib8 14.02.2011 в 18:39
источник

5 ответов

10

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

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$
    
ответ дан Oli 14.02.2011 в 19:04
источник
2

Try

export TASK="$HOME/Ubuntu\ One"

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

/home/user/Ubuntu One

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

cp $TASK/file somewhere_else/

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

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

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

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

    
ответ дан cako 14.02.2011 в 18:52
источник
0

Эта страница подробно объясняет проблему. Это хорошая идея прочитать его полностью Ссылка

    
ответ дан geirha 14.02.2011 в 19:37
источник
0

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

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

    
ответ дан jjg 14.02.2011 в 21:17
источник
0

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

ln -s Ubuntu\ One UbuntuOne

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

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

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

    
ответ дан Stephen Gensemer 26.02.2013 в 21:40
источник

Ознакомьтесь с другими вопросами по меткам