1

Я создал папку $HOME/bin и поместил туда несколько символических ссылок.

Кроме того, я установил команду « Run command as login shell (в соответствии с этим вопросом) в свойствах терминала.

Теперь, когда я набираю echo $PATH я вижу, что каталог bin не был добавлен в PATH. Я попытался поставить это (который был по умолчанию):

if [ -d "$HOME/bin" ] ; then
    export PATH="$HOME/bin:$PATH"
fi

в .bash_profile , .profile и .bashrc но ничего не получалось .

Вы знаете, что здесь происходит не так?


Обновление: если я открываю терминал и запускаю . ~/.bashrc каталог bin правильно добавлен в PATH. Но если я открою терминал и бегу . ~/.profile не добавляется в PATH (для тестирования я включил вышеупомянутый параметр if в оба этих файла).

Кроме того, я добавил echo "in bashrc" в .bashrc и когда я открываю терминал, он печатает "in bashrc", поэтому он не дает сбой при загрузке bashrc (тот же тест успешно завершен для .profile).

2 ответа2

2

Я только что нашел ответ на свою проблему. Следующая строка была в моем .profile:

export PATH="/usr/local/sbin:usr/local/bin:... который, конечно, сбрасывает PATH в это значение. Это означает, что все, что вносит изменения в PATH и находится выше этой линии, просто больше не имеет никакого эффекта.

Причиной этой проблемы было следующее: Некоторое время назад я изменил свой .profile с помощью команды echo "export PATH=\"$PATH:$HOME/.npm-packages/bin\"" >> ~/.profile . Я думал, что он напишет $PATH виде обычного текста в .profile но вместо этого он разрешил его в фактическом содержании PATH. Мне пришлось избежать знака доллара (\$PATH вместо $PATH), теперь он работает как ожидалось.

0

Если ему не хватает $ HOME/bin (или эквивалентного), проблема, скорее всего, в коде, который вы используете для установки PATH. Вы можете проверить это, закомментировав ваш if/then, который устанавливает PATH, и заменить его следующим:

echo "just a test" > ~/justatest
if [ -d "$HOME/bin" ]; then echo "echo bin found" > ~/bin/testresult; fi
chmod 777 ~/bin/testresult
~/bin/testresult

Первая строка - проверка работоспособности и никогда не должна провалиться. Последние строки проверяют доступность вашего каталога bin. Я использовал соглашение ~ вместо $ PATH - то же самое.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .