Как справиться с пробелом при установке $ PATH


16

Я хочу добавить возвышенную библиотеку к моему пути, но в ней есть пробел.

Я попробовал очевидное, как вы бы перемещаться в терминале (например /Applications/Sublime\ Text\ 2.app/Contents)

export PATH="/Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl:$PATH"

Но я все еще получаю ошибку

/Applications/Sublime: No such file or directory

Я мог бы переименовать это, но мне любопытно, как решить это. Я использую Bash.


попробовать export PATH='/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl:$PATH? Кроме того, эта новая строка предназначена?
скромно

Нет, это не новая строка, просто появляется таким образом, когда я вставил ее. Ваше предложение не помогло, и оно убило мой путь, поэтому я не мог использовать vi, пришлось переключиться на другую оболочку, чтобы вернуться обратно.
Шон Вейдер

1
Предложение demure должно сделать это, но используйте двойные кавычки: в export PATH="/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl:$PATH"противном случае $ PATH не будет расширен.
Jaume

Первоначально он был в двойных кавычках, но в .bashrc он все еще не понравился.
Шон Вейдер

Не могли бы вы быть более точным? Что вы подразумеваете под "это не понравилось"? Вы получаете ошибку (какая)? Или это просто не сработало?
Jaume

Ответы:


15

Используйте обратную косую черту или кавычки, а не оба. Вы помещаете последовательность обратной косой черты в PATHзначение.

export PATH="/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl:$PATH"

или

export PATH=/Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl:$PATH

Обязательно не переносите строку: это должны быть пробелы, а не переводы строк.

Обратите внимание, что если вы видите ошибку, похожую /Applications/Sublime: No such file or directoryна export PATH=…строку, то в этой строке есть синтаксическая ошибка, например, пробел после знака равенства: присвоение не пытается искать каталог. Если ошибка возникла позже, то это не связано со значением PATH, или, если это так, только очень косвенно: вполне нормально, если записи $PATHне существуют, а несуществующий каталог не приведет к сообщению об ошибке. ,


4

Если путь задан правильно как .bash_profileс двойными кавычками или с обратной косой чертой и содержит пробелы, вам необходимо вызывать переменные с двойными кавычками .

Например, если .bash_profileустановлено как ниже:

export SUBLIMEPATH="/Applications/Sublime Text 2.app/Contents"
export PATH=$PATH:$SUBLIMEPATH/SharedSupport/bin/subl

Вы не можете сделать , cd $SUBLIMEPATHчтобы изменить текущий каталог, вы получите сообщение об No such file or directoryошибке. Но с двойными кавычками, как cd "$SUBLIMEPATH"вы можете.

Надеюсь, что это поможет для чего-то.


3

Чтобы решить эту проблему, я сделал simlink в

ln -s "/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl" /usr/local/sublime/bin/subl

Затем я добавил его в свой путь, используя vi в ~. / Bashrc

export PATH="/usr/local/sublime/bin/:$PATH"

Не забудьте найти исходный код .bashrc, чтобы забрать ваши изменения

source ~/.bashrc

1

Это не отвечает на вопрос. Тем не менее, он рассматривается как замечание, сделанное в одном из ответов, и обсуждает аналогичную процедуру.

Также возможно создать псевдоним для Sublime Text путем редактирования .bash_profileили .bashrc(в зависимости от того, какой файл конфигурации BASH находится в вашем домашнем каталоге).

alias sublime="/Applications/Sublime\ Text.app/Contents/MacOS/Sublime\ Text"

Для этого необходимо использовать ОБЕЕ экранированные косые черты и кавычки . В частности, обратите внимание, что это очень отличная ситуация от экспорта PATH, как упомянуто выше, потому что там имеет смысл делать только один или другой, но не оба.

Также обратите внимание, что нет необходимости сначала создавать символическую ссылку, как утверждают официальная документация Sublime и многие другие источники. Этот ответ на StackOverflow делает это правильно.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.