sh スクリプト内部から sh スクリプトのあるディレクトリを取得

カレントディレクトリではなく,sh スクリプト自身のあるディレクトリ.

#!/bin/sh

cd ${0%/*}/
SHDIR=`pwd`

で SHDIR に目的のディレクトリが入る.末尾に / が付いているため,スクリプトが / にあっても問題ない.PATH を通して実行しても,スクリプトには展開済みのパスが渡されるらしく,問題なく実行できそう.

ただし,スクリプト内部からさらに source するスクリプトでは,$0 に bash という文字列が入るらしく,うまくいかない.また,csh の場合,構文が異なるため当然うまくいかない.