Когда я компилирую egxc:
GCC x.c -o x
Чтобы выполнить результат я должен написать:
./x
И просто печатать:
x
Сбой с этим сообщением:
x: команда не найдена
Это означает, что Linux не ищет его в текущем каталоге! Есть ли (я уверен, что есть) какая-либо разумная проблема за этим поведением?
Ответы:
Потому что по умолчанию текущий рабочий каталог отсутствует в
PATH
переменной.Это мера безопасности / удобства. Если в вашем текущем рабочем каталоге есть исполняемые файлы / скрипты, называемые, например
cd
,ls
и т. Д., Было бы очень неприятно, если бы они запускались по умолчанию.источник
cd
вbash
, он выполняет обычную внутренний колотить и не/bin/cd
) , если вы не предварять с `.`sl
, у вас та же проблема. Только доверенные каталоги должны быть$PATH
и относительные пути любят.
не никогда доверенный каталог для интерактивной оболочки.rm -r target
когда я имел в виду,rm -f target
обычно нет никакой разницы. Если я наберу,rm -f target
когда я имел в видуrm -r target
, либо нет никакой разницы, либо удаление не удастся. Кроме того, я думаю, что каждый раз, когда я печатаюrm
, особенно если я добавляю-f
или-r
или глобус - это опасная команда по своей природе. Никто не думает, прежде чемls
ING.Это означает, что текущий каталог отсутствует в переменной $ PATH.
источник
Это можно исправить, добавив текущий каталог (представленный одной точкой) в
PATH
переменную окружения.Способ сделать это зависит от используемой вами оболочки.
если вы используете bash, вы можете добавить строку
export PATH=$PATH:.
в.bashrc
файл в вашем домашнем каталоге.если вы используете csh или tcsh, добавьте строку
set PATH = ($PATH .)
в файл .cshrc в вашем домашнем каталоге.ИМХО, для домашнего настольного компьютера это приемлемая вещь - с точки зрения безопасности.
источник