順番
補記事項
その他配慮ポイント
- サービスやcronで実行される場合は、上記ファイル群の定義を参照しない
- /etc/environmentで定義されている場合、それが読み込まれる(※1)
- crontabのPATH変数は/etc/crontab内に定義されている場合がある(※2)
- /etc/sudoersのsecure_pathはsudo実行時のみ上書きされる(cron実行時には評価されない)
- suコマンドに-オプション付けてログインしている時としていない場合でも変わる
- systemdのユニットファイルに環境変数が定義されている場合がある
- /etc/locate.conf で定義されている場合もある
- それ以外にもスクリプトのどこかで上書きされている場合がある
- 上書きされている場合もあれば、追記という形で定義されている場合がある
- 手動実行時とサービス等での実行時では変わる要素がありすぎるため、必ずテストすること
- 必ず、必ずテストすること(2度目)
- かくいう私も7年程前にやらかしてる…
- 上記に理解誤り、配慮漏れはあるかもしれない
※1 参照される主なシーン
- システムサービス
- 実行中のデーモン
※2 /etc/crontabに定義されている例(※3)
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin (以下略)