シェルスクリプトで $0 使うときの注意

これも同じメモに書いてあった小ネタ。

/Users/username/test.sh というファイル名のスクリプト中に

echo $0

とあった場合、$0 は起動時のパスになるので、

% ./test.sh 
./test.sh
% 
% /Users/username/test.sh
/Users/username/test.sh
%
% ~/test.sh 
/Users/username/test.sh
% 

といった具合で、同じ環境でも起動の仕方で出力が変わる。$0 の値からパスを解析してゴニュゴニョしようとするとバグになるので注意。