Experimente o comando abaixo
export PATH=$PATH:/usr/sbin
OR (se você quiser definir todos os caminhos)
export PATH=$PATH:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin:/usr/games
A minha pergunta está relacionada com outra questão aberta . Meu eco $ PATH me dá uma saída que é como
/home/sahil/.rvm/gems/ruby-1.9.3-p125/bin:/home/sahil/.rvm/gems/ruby-1.9.3-p125@global/bin:/home/sahil/.rvm/rubies/ruby-1.9.3-p125/bin:/home/sahil/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/home/sahil/.rvm/bin{}:/home/android-sdks/{}:/home/android-sdks/platform-tools/{}:/home/android-sdks/tools/{}:/home/sahil/android-sdks/tools{}:/home/sahil/android-sdks/tools:/home/sahil/android-sdks/platform-tools/
Mas correndo
ifconfig
me dá uma saída como
Command 'ifconfig' is available in '/sbin/ifconfig'
The command could not be located because '/sbin' is not included in the PATH environment variable.
This is most likely caused by the lack of administrative privileges associated with your user account.
ifconfig: command not found
depois de executar o comando como dado em outra pergunta
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
roda ifconfig mas bloqueia outros comandos de rails ruby ou rvm.
Buscando ajuda sobre como resolver isso. Além disso, por que isso acontece?
Experimente o comando abaixo
export PATH=$PATH:/usr/sbin
OR (se você quiser definir todos os caminhos)
export PATH=$PATH:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin:/usr/games
Seu original $PATH
(a linha que você postou não é muito legível):
/home/sahil/.rvm/gems/ruby-1.9.3-p125/bin:
/home/sahil/.rvm/gems/ruby-1.9.3-p125@global/bin:
/home/sahil/.rvm/rubies/ruby-1.9.3-p125/bin:/home/sahil/.rvm/bin:
/usr/local/bin:/usr/bin:/bin:/usr/games:
/home/sahil/.rvm/bin{}:
/home/android-sdks/{}:
/home/android-sdks/platform-tools/{}:
/home/android-sdks/tools/{}:
/home/sahil/android-sdks/tools{}:
/home/sahil/android-sdks/tools:
/home/sahil/android-sdks/platform-tools/
Você tem /usr/local/bin
, /usr/bin
e /bin
. Como você já descobriu, o ifconfig
está dentro de /sbin
.
Então, onde esse caminho está definido, você também precisa incluir /sbin
.
Veja os rubygems sobre como fazer isso.
/ sbin é normalmente parte do caminho. Outras distros como o fedora não o têm no PATH para usuários normais, mas acho que o Ubuntu sempre faz isso. Eu sugiro que você verifique seu arquivo / etc / environment e veja se ele é válido e se o / sbin foi adicionado ao caminho. Quando executo cat / etc / environment , recebo a seguinte saída:
adnan@adnan-laptop:~$ cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
Como você pode ver, o / sbin já faz parte da variável de ambiente PATH. Se o seu arquivo tiver o mesmo conteúdo, verifique suas permissões. Caso contrário, adicione / sbin ao PATH nesse arquivo. Para mim as permissões são:
adnan@adnan-laptop:~$ ls -l /etc/environment
-rw-r--r-- 1 root root 79 2009-10-29 01:55 /etc/environment
Você pode resolver isso facilmente adicionando /sbin
a $PATH
. O ponto mais importante é que, você não deve ter /sbin
no caminho por padrão .
Veja esta página para uma descrição do motivo:
/sbin
definição do diretório
/sbin
contém utilitários do sistema que devem ser executados por raiz ou usando a autoridade sudo. Então, se você quiser ver sua configuração de rede, basta digitar:
sudo /sbin/ifconfig
Você será solicitado a fornecer sua senha e, em seguida, ifconfig
será executado.
Qual é a variável PATH
?
PATH
é uma lista de caminhos de diretório. Quando o usuário digita um comando sem fornecer o caminho completo, essa lista é verificada para ver se ele contém um caminho que leva ao comando. A ordem dos caminhos nesta variável indica a ordem em que o comando será pesquisado, caso haja um programa com o mesmo nome em vários diretórios aquele localizado na pasta mais próxima do início da lista (lado esquerdo) será executado.
A razão pela qual você tem outros comandos bloqueados (de ruby rails e rvm) é porque você executou isto:
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
resultando em um PATH
que não contém as pastas de tais programas, a saber:
/home/sahil/.rvm/gems/ruby-1.9.3-p125/bin:/home/sahil/.rvm/gems/ruby-1.9.3-p125@global/bin:/home/sahil/.rvm/rubies/ruby-1.9.3-p125/bin:/home/sahil/.rvm/bin
O que você deve fazer é adicionar /sbin
ao seu próprio PATH
.
Como adicionar /sbin
a PATH
Como o PATH
é basicamente sempre no ambiente, você não precisa exportá-lo, basta adicionar o diretório /sbin
nele. Para fazer isso, você pode executar no seu bash
PATH="$PATH:/sbin"
seu caminho agora deve ser algo assim:
/home/sahil/.rvm/gems/ruby-1.9.3-p125/bin:/home/sahil/.rvm/gems/ruby-1.9.3-p125@global/bin:/home/sahil/.rvm/rubies/ruby-1.9.3-p125/bin:/home/sahil/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/home/sahil/.rvm/bin{}:/home/android-sdks/{}:/home/android-sdks/platform-tools/{}:/home/android-sdks/tools/{}:/home/sahil/android-sdks/tools{}:/home/sahil/android-sdks/tools:/home/sahil/android-sdks/platform-tools/:/sbin
Esta alteração não será permanente, uma vez que o fechamento da sua sessão atual PATH
será recarregado com o valor anterior. Para torná-lo permanente, você deve adicionar essa alteração ao seu arquivo ~/.profile
. Uma maneira de fazer isso é o seguinte:
echo 'PATH="$PATH:/sbin"' >> ~/.profile
Agora você só precisa executar o conteúdo de "~ / .profile" no shell atual.
source ~/.profile
Você está pronto para ir, não apenas o seu shell atual, mas todas as sessões futuras terão o PATH
contendo o diretório.
Por que usei ~ / .profile em vez de ~ / .bashrc?
Este conceito pode ser útil para você:
~/.profile
é o lugar para colocar coisas que se aplicam a toda a sua sessão, como programas que você deseja iniciar ao fazer login (mas não programas gráficos, eles vão para um arquivo diferente), e definições de variáveis de ambiente.
~/.bashrc
é o local para colocar coisas que se aplicam apenas ao bash, como alias e definições de função, opções de shell e configurações de prompt. (Você também pode colocar as teclas lá, mas para Eles normalmente entram em ~ / .inputrc.
Você não pode obter mais informações sobre este tópico aqui.
Você deve ter /sbin
em seu PATH
?
Não vou discutir aqui se /sbin
deve ou não estar em PATH
por padrão, porque isso pode não ser uma discussão muito produtiva. Eu tenho, você pode tê-lo se quiser. Sua chamada.
Tags command-line paths ifconfig