Если вы введете echo $PATH
, вы увидите список каталогов, которые будут проверяться по порядку на наличие исполняемых файлов.Ваш текущий путь, вероятно, не в этом списке, в целях безопасности *.Чтобы выполнить файл в текущем каталоге, в котором написано .
, используйте ./myscript
.
* Хотя это может показаться неудобным, есть очень веская причина требоватьвам нужно явно указать текущий каталог, если вы хотите выполнить там файл.Предположим, что это был , а не случай, и вы могли бы просто ввести имя файла, чтобы выполнить версию в текущем каталоге.Теперь представьте, что кто-то должен был создать сценарий в этом каталоге с именем ls
, содержимое которого было бы rm *
.Хуже того, вредоносный скрипт с именем ssh
может записать ваши учетные данные для входа.
Вы можете изменить это поведение, изменив переменную PATH
, чтобы включить текущий каталог, например: export PATH=$PATH:.
(для поиска в текущем каталогеlast) или export PATH=.:$PATH
(для поиска в текущем каталоге первым).Но вы должны знать о рисках безопасности, а затем решить, что это хорошая идея.
Вот почему по умолчанию системы Linux не должны никогда включать .
вPATH
для пользователя root - единственное, что хуже, чем выполнение вредоносного файла, это выполнение вредоносного файла, если у вас есть права root.