Почему мне всегда приходится вводить «./» перед исполняемым файлом, чтобы запустить его в Linux?

Почему мне всегда приходится вводить «./» перед исполняемым файлом, чтобы запустить его в Linux?

Когда я компилирую egxc:

GCC x.c -o x

Чтобы выполнить результат, мне нужно написать:

./x

И просто печатаю:

x

Сбой с этим сообщением:

x: команда не найдена

Это означает, что Linux не ищет его в текущем каталоге! Есть ли (я уверен, что есть) какая-то разумная причина такого поведения?

решение1

Потому что по умолчанию текущий рабочий каталог не находится в PATHпеременной.

Это мера безопасности/удобства. Если у вас есть двоичные файлы/скрипты с именами eg cd, ls, и т. д. в вашем текущем рабочем каталоге, было бы очень раздражающе, если бы они запускались по умолчанию.

решение2

Это означает, что текущий каталог отсутствует в переменной $PATH.

решение3

Вы можете исправить это, добавив текущий каталог (представленный одной точкой) в PATHпеременную окружения.
Способ сделать это зависит от используемой вами оболочки.
Если вы используете bash, вы можете добавить строку export PATH=$PATH:.в .bashrcфайл в вашем домашнем каталоге.
Если вы используете csh или tcsh, добавьте строку set PATH = ($PATH .)в файл .cshrc в вашем домашнем каталоге.
IMHO, для домашнего настольного компьютера это приемлемо — с точки зрения безопасности.

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