Ответ, который вы, вероятно, видите, указывает не на то, что команды не существуют, а на то, что они «не найдены»:
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
зависимости от того, на какой системе вы работаете. Я уже написал роман, так что это история для другого дня.