Понятия
Переменная PATH в Linux: как добавить каталог в PATH навсегда
PATH — переменная окружения со списком каталогов через двоеточие. Когда вы набираете команду без пути, оболочка ищет исполняемый файл в этих каталогах слева направо и запускает первый найденный.
echo $PATH
# /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Какой файл запустится
which python3 # /usr/bin/python3
type ls # ls is aliased to `ls --color=auto'
command -v deploy # путь или пусто, если команды нет — удобно в скриптах
readlink -f "$(which python3)" # куда ведёт ссылка на самом деле
Добавить каталог в PATH
export PATH="$HOME/bin:$PATH" # в начало: ваши программы важнее системных
export PATH="$PATH:$HOME/bin" # в конец: системные важнее
Так PATH меняется только в текущей оболочке. Навсегда — допишите строку в ~/.bashrc:
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Одинарные кавычки нужны, чтобы в файл попал сам текст $HOME, а не его значение.
Переменные окружения
env # все переменные окружения
printenv HOME # одна переменная
export APP_ENV=staging # переменную увидят программы, запущенные из этой оболочки
APP_ENV=test ./run.sh # только для одной команды
unset APP_ENV # удалить
Без export переменную видит только сама оболочка, но не запускаемые программы.
| Переменная | Значение |
|---|---|
HOME | домашний каталог |
USER | имя пользователя |
SHELL | оболочка входа |
PWD | текущий каталог |
LANG | язык и кодировка |
EDITOR | редактор по умолчанию |
С точки зрения безопасности
- Подмена через PATH. Если скрипт от root вызывает программу без полного пути, а атакующий может
писать в каталог, стоящий в PATH раньше
/usr/bin, он подложит туда свою программу с тем же именем. В скриптах для cron и sudo вызывайте программы по полному пути. - Никогда не добавляйте
.(текущий каталог) в PATH. - Секреты в окружении видит владелец процесса и root через
/proc/<PID>/environ, а утёкший файл.envвеб-приложения — частая находка на проверках.
Обновлено 20 октября 2026 г.