A resposta que você provavelmente está vendo indica que os comandos não existem, mas que "não são encontrados":
telemachus ~ $ ifconfig -a
bash: ifconfig: command not found
Algumas mensagens de erro são inúteis, mas esta é relativamente útil. As palavras "não encontradas" informam onde está o problema. Seu shell (no meu caso é Bash, claramente) procura comandos ao longo de sua variável $PATH
. O PATH
é um conjunto de valores separados por dois pontos. Cada valor é um diretório no qual os programas executáveis (binários) vão, e o shell procura por comandos da esquerda para a direita ao longo dessa cadeia de diretórios. Veja como ver qual é o seu PATH:
telemachus ~ $ echo $PATH
/home/telemachus/bin:/usr/local/bin:/usr/bin:/bin:/usr/games
(Note que maiúsculas e minúsculas, PATH é tudo superior. Também o $
importa.) Então, meu shell procura por comandos no diretório bin
em minha pasta pessoal, depois em /usr/local/bin
e, em seguida, em /usr/bin
A ordem é importante, porque às vezes você terá duas versões de um programa, e você quer ter certeza de encontrar um específico primeiro. (Eu tenho uma versão diferente do Ruby no meu diretório $HOME/bin
do que a do sistema, e quero que seja encontrado primeiro.)
Para adicionar um diretório ao seu PATH, normalmente você pode editar o perfil do seu shell. Dependendo da distribuição do Linux que você está usando, esse arquivo será chamado de .profile
ou .bash_profile
e estará no seu diretório pessoal. Os arquivos que começam com .
(geralmente chamados de arquivos de pontos) são ocultos por padrão. Eles não aparecerão em um gerenciador de arquivos gui e o comando ls
não os verá (sem ajuda). Para ver o que está presente em sua casa, abra um shell (você estará em seu diretório inicial por padrão em um novo shell) e digite ls -A . O sinalizador -A diz ao comando ls para mostrar arquivos ocultos. Você deve ver .profile
ou .bash_profile
, que você pode editar. Adicione dois pontos e o caminho completo do diretório desejado (um caminho completo deve começar com /
para indicar sua posição a partir da raiz da sua unidade). Você não quer dois pontos após o último valor. Então, se você tem um PATH normal, você pode adicionar /sbin
desta maneira:
PATH=$PATH:/sbin
No entanto, tudo isso dito, você ainda não pode obter diretamente em /sbin/shutdown
dessa maneira:
telemachus ~ $ /sbin/shutdown -h now
shutdown: you must be root to do that!
Ao dar o caminho completo do comando, eu "encontrei" o comando, mas ainda não consegui executá-lo. Alguns comandos, como shutdown
, exigem privilégios especiais. Para obter permissão para emitir shutdown
de um shell, você precisaria usar su
ou sudo
dependendo do tipo de sistema em que você está. Eu já escrevi um romance, então essa é uma história para outro dia.