O que é $PATH
?
Como posso ter comandos / programas que estão disponíveis apenas para mim?
Eu já vi esse caminho ~/bin
mencionado anteriormente, mas para que é usado e como o uso?
O que é $PATH
?
Como posso ter comandos / programas que estão disponíveis apenas para mim?
Eu já vi esse caminho ~/bin
mencionado anteriormente, mas para que é usado e como o uso?
Respostas:
$ PATH é uma variável de ambiente usada para procurar comandos. O ~ é o seu diretório pessoal, então ~ / bin será / home / user / bin; é um diretório normal.
Quando você executa "ls" em um shell, por exemplo, na verdade você executa o programa / bin / ls; a localização exata pode variar dependendo da configuração do sistema. Isso acontece porque / bin está no seu $ PATH.
Para ver o caminho e descobrir onde está localizado qualquer comando específico:
$ echo $PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:...
$ which ls # searches $PATH for an executable named "ls"
/bin/ls
$ ls # runs /bin/ls
bin desktop documents downloads examples.desktop music pictures ...
$ /bin/ls # can also run directly
bin desktop documents downloads examples.desktop music pictures ...
Para ter seu próprio diretório bin privado, você só precisa adicioná-lo ao caminho. Faça isso editando ~ / .profile (um arquivo oculto) para incluir as linhas abaixo. Se as linhas forem comentadas, você precisará apenas descomentá-las; se eles já estiverem lá, está tudo pronto!
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ]; then
PATH="$HOME/bin:$PATH"
fi
Agora você precisa criar seu diretório ~ / bin e, como .profile é executado no login e só adiciona ~ / bin se existir naquele momento, é necessário efetuar login novamente para ver o PATH atualizado.
Vamos testá-lo:
$ ln -s $(which ls) ~/bin/my-ls # symlink
$ which my-ls
/home/user/bin/my-ls
$ my-ls -l ~/bin/my-ls
lrwxrwxrwx 1 user user 7 2010-10-27 18:56 my-ls -> /bin/ls
$ my-ls # lookup through $PATH
bin desktop documents downloads examples.desktop music pictures ...
$ ~/bin/my-ls # doesn't use $PATH to lookup
bin desktop documents downloads examples.desktop music pictures ...
type
para ver como um comando real será resolvido pelo shell; por exemplo: which echo
e type echo
relatará coisas diferentes, which
retorna '/ bin / echo', mas 'type' retorna que é um shell embutido, o qual o shell preferirá sobre o arquivo em '/ bin'.
which
é melhor substituído por type
ou command
em shells interativos e é completamente inútil em scripts.
$HOME
variável variável $PATH
por algum motivo não funciona, ou seja, é preciso usar o ~
sinal.
Em relação a ~/bin
comandos / programas disponíveis apenas para o usuário
Versões recentes do Ubuntu incluem o ~/bin
diretório no seu $PATH
, mas somente se o ~/bin
diretório existir.
Se não existir:
Verifique se você ~/.profile
contém a seguinte estrofe (o padrão ~/.profile
já existe):
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Crie o ~/bin
diretório:
mkdir -p ~/bin
Reinicie o computador ou force o bash a reler ~/.profile
:
exec -l bash
exec -l bash
dica "reiniciar ou ". O que a -l
bandeira faz? Não estou encontrando uma explicação no man exec
.
exec -l
executará o bash como um shell de login [ wiki.bash-hackers.org/commands/builtin/exec] . Em suma, força o bash a reler /etc/profile
e ~/.profile
. A execução exec bash
apenas relerá ~/.bashrc
.