Como modificar $PATH globalmente

Como modificar $PATH globalmente

No meu Debianservidor eu uso crontabpara agendar um pythoncódigo. O problema é: quando adiciono uma linha como esta:

6 9 * * * python /path/to/daily_task.py &> $HOME/out.txt

Não é de surpreender que a saída indique que pythono comando não foi encontrado.

É claro que posso simplesmente adicionar um caminho completo para a entrada do crontab como /opt/python/3.9.2/bin/python, mas não gosto dessa ideia porque parece confusa e esse problema também persiste quando preciso, por exemplo, fazer algo como os.system("python task.py")em daily_task.py.

Tentei adicionar a linha assim /etc/environment:

export PATH="$PATH:/opt/python/3.9.2/bin/"

Após uma reinicialização, eu realmente poderia usar apenas pythonna janela do meu terminal, mas crontabainda $PATHconsiste apenas em arquivos /usr/bin.

Onde devo colocar esse código para alterar $PATHem todos os lugares, inclusive crontab(sem alterar o arquivo crontab)?

Responder1

Se você olhar o conteúdo de /bin, verá muitos links simbólicos porque muitos programas não são colocados diretamente nos diretórios bin. Você pode fazer o mesmo:

sudo ln -s /opt/python/3.9.2/bin/python /usr/bin

Dessa forma, você não precisa modificar seu arquivo crontab.

Responder2

Você pode adicionar variáveis ​​de ambiente no próprio arquivo crontab assim:

PATH=/usr/bin:/whatever/bin
HOME=/home/myuser
6 9 * * * python /path/to/daily_task.py &> $HOME/out.txt

informação relacionada