Может ли быть повреждена переменная PATH?

Может ли быть повреждена переменная PATH?

Я установил rbenv, программу управления версиями ruby. Я посмотрел в файл .bashrc и заметил, что переменная path изменилась следующим образом:

export PATH="$HOME/.rbenv/bin:$PATH"

Я думаю, что часть ":$PATH" была включена, чтобы включить содержимое старого пути. Я хотел бы знать, что произойдет, если программа, которая изменяет переменную пути, не включит часть ":$PATH". Не смогу ли я запустить некоторые программы из командной строки, поскольку каталоги bin, в которых они находятся, больше не включены в новую переменную пути?

решение1

Вы правы. Поэтому сторонние пакеты должны только расширять текущий путь, а не ограничивать его.

решение2

PATH— это разделенный двоеточием список каталогов, которые ваша оболочка ( bash, fish, ksh, sh, и т. д.) использует для поиска чего-либо для выполнения. Если первое слово строки, которую вы вводите в оболочку, не является встроенной командой или псевдонимом оболочки, оболочка проходит по списку каталогов в $PATH, ища исполняемый файл с тем же именем, что и первое слово введенной вами команды.

command not foundОшибки для общих команд ( da/media/w3/0123-4567/PODCASTS/2016-Nov-27/loe-wildlife-decline.mp3te, ls, ...) указывают на неправильно сформированный PATH. Аварийная ситуация PATH(достаточная для того, чтобы вы могли исправить проблему, может быть установлена ​​с помощью export PATH=/usr/bin:/bin:/usr/local/bin:/snap/bin.

Многие PATHошибки являются ошибками синтаксиса оболочки ( Spaceдо или после =. То есть PATH=value, без пробелов).

Что касается «повреждения пути», если я создал «специальную» версию ls, сохраненную в /.evil/bin/ls, И я могу повредить ваш путь так, что он будет иметь/.evil/bin ДО /bin, когда вы вводите ls, оболочка будет запущена /.evil/bin/lsвместо /bin/ls. Хорошо известная ошибка, но к тому времени, как она станет полезной, ваша система будет полностью взломана.

решение3

Вы сможете их запустить, вам просто нужно будет указать полный путь. Изменение PATHне изменяет связанные с ними разрешения.

Связанный контент