Как изменить $PATH глобально

Как изменить $PATH глобально

На моем Debianсервере я использую crontabдля планирования pythonкода. Проблема в следующем: когда я добавляю строку типа этой:

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

Неудивительно, что в выводе указано, что pythonкоманда не найдена.

Конечно, я могу просто добавить полный путь к записи crontab, например /opt/python/3.9.2/bin/python, , но мне эта идея не нравится, потому что она выглядит запутанной, и эта проблема сохраняется, когда мне нужно, например, сделать что-то os.system("python task.py")вроде daily_task.py.

Я попробовал добавить такую ​​строку /etc/environment:

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

После перезагрузки я действительно смог использовать только pythonв окне терминала, но crontab's $PATHпо-прежнему состоит только из /usr/bin.

Где мне следует разместить этот код, чтобы изменить $PATHего везде, включая crontab(без изменения файла crontab)?

решение1

Если вы посмотрите на содержимое /bin, вы увидите много символических ссылок, поскольку многие программы не помещаются напрямую в каталоги bin. Вы можете сделать то же самое:

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

Таким образом, вам не придется изменять свой crontab.

решение2

Вы можете добавить переменные среды в сам файл crontab следующим образом:

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

Связанный контент