[エンジニア心得え-shell-1]

□shellスクリプト内ではパスを絶対パスで記述する.または環境変数で設定したパスを利用する

[理由]

  • 一般的にcronでの実行時のカレントは実行ユーザーのホームディレクトリ($HOME)
  • 相対パスで記載しているとスクリプトがカレントに依存してしまい、cron実行時のカレントと相違が発生する(cron実行だと動かない問題)

[検証]

  • cron実行時のカレント調査
    • 相対パスでcron実行
    • 出力ファイルのパスを確認
* * * * * date > temp.txt
$ find `pwd` -maxdepth 1 -mindepth 1 | grep temp.txt
/Users/shouhei/temp.txt
  • cron実行時の環境変数調査
    • cronで環境変数を出力
    • 出力ファイルを確認(少ない)
* * * * * env > cron_env
$ cat cron_env
SHELL=/bin/sh
USER=shouhei
PATH=/usr/bin:/bin
PWD=/Users/shouhei
SHLVL=1
HOME=/Users/shouhei ★
LOGNAME=shouhei
_=/usr/bin/env