Como configurar o PATH para todos os usuários no Debian?

25

Eu tenho um servidor Debian Lenny e gostaria que o www-datausuário tivesse /usr/local/zend/binem seu PATH, para que ele possa executar um script no cron como www-data.

Como adiciono /usr/local/zend/binao PATH, para www-dataque os arquivos possam ser executados /usr/local/zend/bin?

Sandra
fonte

Respostas:

40

O primeiro local em que PATH está definido é /etc/login.defs. Há uma configuração para raiz e uma configuração para todos os outros.

Outro lugar onde você pode definir variáveis ​​de ambiente é /etc/environment. Essas configurações serão aplicadas a todos (você não pode escrever um código de shell arbitrário lá).

Um terceiro lugar onde você pode definir variáveis ​​de ambiente é /etc/profile. Lá você pode escrever um código de shell arbitrário. Se você deseja uma configuração específica do usuário, existe o arquivo correspondente por usuário ~www-data/.profile. Mas isso se aplicará apenas a logons interativos do console; em particular, ele não se aplicará aos trabalhos cron, a menos que eles sejam explicitamente fonte /etc/profile.

Se você precisar apenas dessa PATHconfiguração em um crontab de usuário, poderá escrevê-la no início do crontab. Observe que você precisa da lista completa ( PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/zend/bin), não pode usar uma substituição de variável ( PATH=$PATH:/usr/local/zend/binnão funcionará lá).

Gilles 'SO- parar de ser mau'
fonte
---- como você recarrega, por exemplo, /etc/login.defs?
MrCalvin
@MrCalvin Ao fazer login.
Gilles 'SO- stop
1
Existe algum motivo para /etc/login.defsser ignorado? Atualizei ENV_PATHe estou ecoando $ PATH quando .bashrc é carregado. Em algum lugar no meio, ele está sendo alterado ou não é atualizado, pois exibe o valor antigo. Eu reiniciei o computador - então não é isso.
Annan
As chances do @Annan são que ele esteja sendo alterado em algum lugar. Observe que minha resposta foi escrita em 2010, antes do systemd; se o seu sistema usa systemd, ele pode ter sua própria maneira de definir PATHalém ou em substituição de outras maneiras.
Gilles 'SO- stop be evil'
8

Para definir um caminho para todos os usuários, exceto root, edite /etc/profileou /etc/enviroment. Para usuário root ou individual, edite seus diretórios pessoais .bashrcou .bash_profilenos respectivos diretórios pessoais, respectivamente. Adicione o PATH=$PATH:/new/location/.

David Rickman
fonte
1

Para simplesmente definir var para todos os usuários, sem sobrecarregar o seu profile, você pode adicionar seu próprio pequeno script no /etc/profile.ddiretório assim:

echo 'PATH="/usr/local/zend/bin:$PATH"' > /etc/profile.d/zend_path.sh

Então faça logon novamente.

user3132194
fonte
1

nano / etc / profile

Adicione estas linhas ao final do arquivo:

exportar JAVA_HOME = / opt / jdk-12.0.1

exportar MAVEN_HOME = / opt / apache-maven-3.6.1

exportar M2_HOME = / opt / apache-maven-3.6.1

exportar M2 = / opt / apache-maven-3.6.1 / bin

exportar PATH = $ JAVA_HOME / bin: $ M2: $ PATH

Salve o arquivo. Reinicie ou use o comando abaixo:

fonte / etc / profile

Teste suas configurações:

eco $ JAVA_HOME

javac --version

Ryan Augustine
fonte