Hacker News Digest

11 октября 2026 г. в 12:13 • disconnect3d.pl • ⭐ 199 • 💬 138

Original • HN

#bash#environment-variable#home-directory#nonos#path#tilde-expansion#zsh

The tilde in your PATH may not be your HOME

Тильда в переменной PATH не раскрывается в домашний каталог, если она находится в кавычках или после двоеточия в присваивании переменной. Например, строка export PATH="$PATH:~/.local/bin/" добавит в PATH буквальную строку ~/.local/bin/, которая интерпретируется как относительный путь ./~/.local/bin/ относительно текущего рабочего каталога, а не как $HOME/.local/bin/. Это может привести к неожиданному поведению, например, запуску программ из поддельной структуры каталогов вроде ./~/. Раскрытие тильды происходит только в незакавыченных контекстах сразу после = или :, поэтому даже export PATH=$PATH:~/.local/bin работает в Bash и Zsh, но ломается при наличии пробелов. Надёжный способ — использовать $HOME: export PATH="$PATH:$HOME/.local/bin/". Проверить наличие проблемы можно командой echo "$PATH" | grep '~'. Если вывод не пустой — замените ~ на $HOME в конфигурационных файлах оболочки. Инструмент nono полезно предупреждает об таких уязвимостях в песочнице.