Ответ, который вы, вероятно, видите, указывает не на то, что команды не существуют, а на то, что они «не найдены»:
telemachus ~ $ ifconfig -a bash: ifconfig: command not found
Некоторые сообщения об ошибках бесполезны, но это на самом деле относительно полезно. Слова «не найдены» говорят вам, где проблема. Ваша оболочка (в моем случае это Bash, очевидно) ищет команды по своей $PATH
переменной. Это PATH
набор значений, разделенных двоеточиями. Каждое значение является каталогом, куда идут исполняемые (двоичные) программы, и оболочка ищет команды в порядке слева направо по этой цепочке каталогов. Вот как можно увидеть, каков ваш PATH:
telemachus ~ $ echo $PATH /home/telemachus/bin:/usr/local/bin:/usr/bin:/bin:/usr/games
(Обратите внимание, что регистр имеет значение, PATH все верхнее. Также $
имеет значение.) Поэтому моя оболочка ищет команды в bin
каталоге в моей домашней папке, затем в /usr/local/bin
, затем в /usr/bin
и т. Д. Порядок имеет значение, потому что иногда у вас будет две версии одной программа, и вы хотите убедиться, что вы найдете конкретный в первую очередь. (У меня в $HOME/bin
каталоге есть версия Ruby, отличная от общесистемной, и я хочу, чтобы она была найдена первой.)
Чтобы добавить каталог в PATH, вы обычно можете отредактировать профиль вашей оболочки. В зависимости от того, какой дистрибутив Linux вы используете, этот файл будет называться .profile
или .bash_profile
, и он будет находиться в вашем домашнем каталоге. Файлы, начинающиеся с .
(часто называемые точечными файлами), по умолчанию скрыты. Они не будут отображаться в файловом менеджере GUI, и ls
команда не увидит их (без помощи). Чтобы увидеть, что присутствует в вашем доме, откройте оболочку (в новой оболочке вы по умолчанию будете находиться в вашем домашнем каталоге) и введите ls -A . -A флаг указывает Ls команду, чтобы показать скрытые файлы. Вы должны увидеть либо .profile
или .bash_profile
, которые вы можете редактировать. Добавьте двоеточие и полный путь к нужному каталогу (полный путь должен начинаться с/
указать свою позицию от корня вашего диска). Вы не хотите двоеточие после последнего значения. Поэтому, если у вас нормальный PATH, вы можете добавить /sbin
этот путь:
PATH=$PATH:/sbin
Тем не менее, все это говорит, что вы все еще не можете получить прямо /sbin/shutdown
таким образом:
telemachus ~ $ /sbin/shutdown -h now shutdown: you must be root to do that!
Дав полный путь к команде, я «нашел» команду, но все равно не смог ее запустить. Некоторые команды, например shutdown
, требуют специальных привилегий. Чтобы получить разрешение на выпуск shutdown
из оболочки, вам нужно будет использовать su
или в sudo
зависимости от того, какую систему вы используете. Я уже написал роман, так что это история для другого дня.