PATH vs символьная ссылка subl: команда не найдена - PullRequest
0 голосов
/ 02 апреля 2019

Когда я echo $PATH на моем Mac, я вижу:

/Users/me/.nvm/versions/node/v8.2.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin:/Applications/Sublime\ Text.app/Contents/SharedSupport/bin

Запуск code для открытия проекта с помощью редактора vscode работает, однако subl получает ошибку -bash: subl: command not found. Я заметил, что в Интернете многие люди предлагают использовать символическую ссылку на usr/local/bin, однако я не понимаю, почему это необходимо, если она уже есть в моем PATH.

Если я cd /Applications/Sublime\ Text.app/Contents/SharedSupport/bin я вижу, subl существует там.

Если я запускаю следующее в своем терминале /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl, открывается возвышенное. Однако, если я попытаюсь запустить subl непосредственно из этой корзины, она не откроется.

subl внутри корзины имеет следующие разрешения: -rwxr-xr-

Я добавляю это к своему пути, добавляя это к моему .bashrc:

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

Я не совсем уверен, почему он не открывается с помощью команды subl, и я не понимаю, зачем мне нужно связывать, если он находится в моем PATH. Я бы предпочел исправить это с помощью решения, которое я понимаю.

1 Ответ

1 голос
/ 02 апреля 2019

Вы дважды выходите из пробелов. Кавычки неявно экранируют каждый символ, который они содержат, включая \, который вы используете для выхода из пробела. Будет работать любое из следующего:

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

То, что вы выбираете, является вопросом предпочтения.

Обратите внимание, что вы также можете сбросить export. Вы экспортируете имена , а не значения, поэтому после экспорта PATH он остается экспортированным. (На самом деле, PATH экспортируется по умолчанию, потому что вы наследуете его от процесса, который запустил вашу оболочку.)

...