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

[エンジニア心得え-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
* * * * * 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