Что такое $PATH
?
Как я могу иметь команды / программы, которые доступны только для меня?
Я видел этот путь, ~/bin
упомянутый ранее, но для чего он используется и как его использовать?
environment-variables
Braiam
источник
источник
Ответы:
$ PATH - это переменная окружения, используемая для поиска команд. ~ Ваш домашний каталог, поэтому ~ / bin будет / home / user / bin; это нормальный каталог.
Например, когда вы запускаете «ls» в оболочке, вы фактически запускаете программу / bin / ls; точное местоположение может отличаться в зависимости от конфигурации вашей системы. Это происходит потому, что / bin находится в вашем $ PATH.
Чтобы увидеть путь и найти, где находится какая-либо конкретная команда:
Чтобы иметь свой собственный каталог bin, вам нужно всего лишь добавить его в путь. Сделайте это, отредактировав ~ / .profile (скрытый файл), чтобы включить строки ниже. Если строки закомментированы, вам нужно только раскомментировать их; если они уже есть, у вас все готово!
Теперь вам нужно создать каталог ~ / bin, и, поскольку .profile запускается при входе в систему и добавляет ~ / bin только в том случае, если он существует в то время, вам нужно снова войти в систему, чтобы увидеть обновленный PATH.
Давайте проверим это:
источник
type
чтобы увидеть, как фактическая команда будет решена оболочкой; Например:which echo
иtype echo
сообщит о разных вещах,which
возвращает «/ bin / echo», но «type» возвращает, что это встроенная оболочка, которую оболочка предпочтет над файлом в «/ bin».which
лучше заменить наtype
илиcommand
в интерактивных оболочках, и это абсолютно бесполезно в сценариях.$HOME
переменная в$PATH
какой-то причине не работает, то есть~
вместо нее нужно использовать знак.Относительно
~/bin
и команды / программы доступны только для вашего пользователяПоследние версии Ubuntu включают в себя
~/bin
каталог$PATH
, но только если~/bin
каталог существует.Если он не существует:
Убедитесь, что ваш
~/.profile
раздел содержит следующую строфу (по умолчанию~/.profile
уже есть):Создайте
~/bin
каталог:Перезагрузите компьютер или принудительно перечитайте bash
~/.profile
:источник
exec -l bash
подсказку «перезагрузка или ». Что делает-l
флаг? Я не нахожу объяснения вman exec
.exec -l
выполнит bash в качестве оболочки для входа [ wiki.bash-hackers.org/commands/builtin/exec] . Короче говоря, это заставит Bash перечитать/etc/profile
и~/.profile
. Просто работаетexec bash
будет только перечитать~/.bashrc
.