$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$PATHまだ のみで構成されています/usr/bin

crontab ファイルを変更せずに、$PATHあらゆる場所を変更するには、このコードをどこに配置すればよいですか?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

関連情報