Minha pergunta está relacionada a outro abertopergunta. Meu echo $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"
ele correifconfigmas bloqueia outros comandos de Ruby Rails ou rvm.
Procurando ajuda como resolver isso. Também por que isso acontece?
Responder1
Experimente o comando abaixo
export PATH=$PATH:/usr/sbin
OU (se você quiser definir todos os caminhos)
export PATH=$PATH:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin:/usr/games
Responder2
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 ifconfig
está dentro /sbin
.
Então, onde esse caminho está definido, você também precisa incluir /sbin
.
Vergemas de rubidocumentos sobre como fazer isso.
Responder3
/sbin normalmente faz parte do caminho. Outras distros como o fedora não o possuem no PATH para usuários normais, mas acho que o Ubuntu sempre o possui. Sugiro que você verifique seu arquivo /etc/environment e veja se ele é válido e se tem /sbin adicionado ao caminho. Quando eu corrogato /etc/ambiente, 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/sbinjá 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 neste 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
Responder4
Qual é a PATH
variável?
PATH
é uma lista de caminhos de diretório. Quando o usuário digita um comando sem fornecer o caminho completo, esta lista é verificada para ver se 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 exista 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ê bloqueou outros comandos (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
quenão contémas 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 arquivo PATH
.
Como adicionar /sbin
aPATH
Como o arquivo PATH
está basicamente sempre no ambiente, você não precisa exportá-lo, basta adicionar o /sbin
diretório a ele. Para fazer isso você pode executar no seu bash
PATH="$PATH:/sbin"
seu caminho agora deve ser parecido com isto:
/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 mudança não será permanente, porém, uma vez encerrada, sua sessão atual PATH
será recarregada com o valor anterior. Para torná-lo permanente, você deve adicionar esta alteração ao seu ~/.profile
arquivo. Uma maneira de fazer isso é a 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 começar, não apenas seu shell atual, mas todas as suas sessões futuras terão o PATH
diretório que contém.
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 quando fizer login (mas não programas gráficos, eles vão para um arquivo diferente) e
definições de variáveis de ambiente.
~/.bashrc
é o lugar para colocar coisas que se aplicam apenas ao próprio bash, como alias e definições de funções, opções de shell e configurações de prompt. (Você também pode colocar combinações de teclas lá, mas para o bash elas normalmente vão para ~/.inputrc.)
Você não pode obter mais informações sobre este tópico aqui.
Você deveria ter /sbin
em seu PATH
?
Não vou discutir aqui se /sbin
deveria ou não estar incluído PATH
por padrão, porque essa pode acabar não sendo uma discussão muito produtiva aqui. Eu tenho, você pode ficar com ele se quiser. Sua chamada.