Когда я компилирую 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, для домашнего настольного компьютера это приемлемо — с точки зрения безопасности.