Почему. не в пути по умолчанию?

В подобных UNIX системах за эти годы (наиболее соответствующим образом мне, Linux), я заметил это . (текущий dir), никогда не находится в $PATH по умолчанию. Почему это?

Я вспоминаю чтение несколько лет назад, что это была проблема безопасности, но статья, которую я прочитал, не объяснила, какова точно проблема была. Это, потому что кто-то мог оставить злонамеренную версию ls или cp в каталоге, и я закончил бы тем, что выполнил его, не понимая, что это было там?

64
задан 12.10.2017, 15:27

3 ответа

Вы ответили правильно на свой собственный вопрос, это точно, почему точка не находится в пути:
Защищать от ребяческих вирусов или честных ошибок.

Конечно, это - очень хромая и бесполезная антивирусная мера, и ничто не мешает Вам добавить точку к пути самим.

42
ответ дан 07.12.2019, 08:15

Да. Если бы Вы помещаете "." в путь, Вы закончили бы тем, что отправили, большая команда звонит в файлы в Вашем текущем каталоге.

Даже если это было последним, существует все еще ошибка пилота. Например, Солярис 10 испытывает недостаток в "вершине". Я ввожу "вершину" в своей системе целый день, потому что я думаю, что нахожусь в системе, которая имеет "вершину".

4
ответ дан 07.12.2019, 08:15

Извините, я хотел бы спросить это в форме комментария к выбранному ответу, но у меня еще нет представителя на суперпользователе.

Ответ безопасности имеет смысл, но если Вы помещаете "." в свой ПУТЬ как последняя вещь, разве оболочка не должна смотреть в текущем каталоге в последний раз, поскольку это ищет исполняемые файлы, и таким образом уменьшите угрозу безопасности? Если бы это действительно искало $PATH в порядке, то это нашло бы/bin/ls, прежде чем это нашло./ls.

Так, насколько небезопасный это, чтобы я поместил "." в конце своей переменной среды $PATH?

Это работает, как я предполагаю. Вот то, как я протестировал:

Во-первых, добавьте "." в конец своей переменной окружения PATH.

Затем поместите следующий файл в некоторый каталог, такой как ~/dir1/dir2/test_which.rb:

#!/your/path/to/ruby

puts "this file is from the current directory"

И помещенный этот файл в/usr/bin/test_which.rb

#!/your/path/to/ruby

puts "this file is at /usr/bin/test_which.rb"

Убедитесь chmod +x файлы так, чтобы они были исполняемым файлом.

Теперь, если Вы измените каталог на ~/dir1/dir2 и выполните test_which.rb, то Вы получите вывод

this file is at /usr/bin/test_which.rb

Действительно, если Вы работаете, "о каком test_which.rb" отовсюду, должно сообщить это

/usr/bin/test_which.rb

Можно все еще выполнить файл в текущем каталоге путем ввода:

./test_which.rb
1
ответ дан 07.12.2019, 08:15

Теги

Похожие вопросы