Я обнаружил, что иногда я использую command
для запуска команды, но иногда я использую ./command
для запуска другой команды.
В чем разница?
Выполнение xx
ищет каталоги, перечисленные в PATH
переменная среды для названного файла xx
. Первый исполняемый файл, который это находит (ли двоичный файл или сценарий), это выполняется. Это не смотрит в текущем каталоге, если .
перечислен в PATH
, который не рекомендуется.
Выполнение ./xx
петляет названный xx
это расположено в текущем каталоге, если существует исполняемый файл с тем именем там.
Для петляния путем определения его местоположения необходимо включать a /
символ. Если существует нет /
в команде (на самом деле, первая команда, которая является тем, что определяет название файла, который будет выполняться), это ищет PATH
для него. Если существует a /
, затем первая команда взята для обращения к определенному файлу местоположением.
Таким образом, ./xx
отличается от xx
из-за /
то, что это содержит.
Конечно, /xx
не работал бы правильно - это попытается петлять названное xx
расположенный в корневом каталоге, /
. Поскольку .
представляет текущий каталог, ./xx
выполнения xx
там.
ОТВЕТ В БОЛЕЕ ПРОСТЫХ СЛОВАХ:
В Приглашении оболочки мы можем выполнить команды... Команда является только названием исполняемого файла, сохраненного в особенности каталог такой так же как: мусорное ведро, sbin... Мы можем назвать исполняемые файлы, не определяя дополнительное имя.
user@comp~# command
, Когда мы вводим команду, файл выполняется сохраненный в таком конкретном каталоге.
user@comp~# ./command
В этом случае использования ./command
мы звоним в исполняемый файл, который сохранен в текущем быстром пути (Существующий рабочий Каталог). Можно узнать текущий рабочий каталог оболочки с командой pwd
.