A variável $HOME
não é algo com o qual você deve mexer, geralmente; é dependente do usuário. Você não quer que o usuário repentinamente tenha um diretório pessoal diferente! (E se você fizer isso, você deve editar o seu diretório home que está definido em /etc/passwd
- o que obviamente requer root
permissões.)
O $PATH
é outro assunto e deve ser definido em ~/.bashrc
ou ~/.bash_profile
. Existem vários argumentos a respeito dos quais você deve usar, os quais não entrarei aqui.
Digamos que você queira anexar /var/myapp/bin
ao caminho do usuário. Você pode fazer isso adicionando a linha:
export PATH="$PATH:/var/myapp/bin"
para o usuário ~/.bashrc
. Um bom método para fazer isso, evitando adicionar a linha, se já estiver lá, é discutido no vi
stackexchange :
ex -sc '$a
export PATH="$PATH:/var/myapp/bin"
.
$-,$!uniq
x' ~/.bashrc
Esteja avisado que, se você estiver adicionando mais de uma linha dessa maneira, a mesma verificação de segurança para evitar adicioná-las se elas já estiverem lá não funcionará. Você precisará de lógica diferente para isso.
Você também pode considerar um curso de ação diferente: Adicione links simbólicos aos seus binários de comando em /usr/local/bin
, que geralmente já está incluído no $PATH
.
Então, digamos, como no meu exemplo acima, que você queira adicionar /var/myapp/bin
ao PATH do usuário. A razão pela qual você pode querer fazer isso em primeiro lugar é porque você tem alguns comandos (shell scripts ou binários, não importa) em /var/myapp/bin
que você quer que o usuário seja capaz de executar a partir da linha de comando. Digamos que esses comandos sejam myapp_command
e myapp_othercommand
.
Você pode disponibilizá-los no PATH criando links simbólicos assim:
ln -s /var/myapp/bin/myapp_command /usr/local/bin/myapp_command
ln -s /var/myapp/bin/myapp_othercommand /usr/local/bin/myapp_othercommand
O primeiro argumento para ln -s
é o TARGET, o segundo argumento é o nome LINK que você deseja criar para apontar para o destino. (Para mais, veja man ln
.)