Cómo modificar $PATH globalmente

Cómo modificar $PATH globalmente

En mi Debianservidor lo uso crontabpara programar un pythoncódigo. El problema es: cuando agrego una línea como esta:

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

No es de extrañar que el resultado indique que pythonno se encuentra el comando.

Por supuesto, puedo agregar una ruta completa a la entrada de crontab como /opt/python/3.9.2/bin/python, pero no me gusta esta idea porque parece confusa y este problema también persiste cuando necesito, por ejemplo, hacer algo como os.system("python task.py")en daily_task.py.

Intenté agregar una línea como esta a /etc/environment:

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

Después de reiniciar, de hecho podría usarlo solo pythonen la ventana de mi terminal, pero crontabtodavía $PATHsolo consta de /usr/bin.

¿Dónde debería poner este código para cambiarlo $PATHen todas partes, incluido crontab(sin alterar el archivo crontab)?

Respuesta1

Si observa el contenido de /bin, verá muchos enlaces simbólicos porque muchos programas no se colocan directamente en los directorios bin. Puedes hacer lo mismo:

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

De esta manera, no necesita modificar su crontab.

Respuesta2

Puede agregar variables de entorno en su archivo crontab de esta manera:

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

información relacionada