シェルスクリプトで文字列で与えられた相対パスから、ディレクトリの絶対パスを取得する

cdしてpwdする

echo $(cd $(dirname '/usr/bin/perl'); pwd) # /usr/bin

cd /usr/bin
echo $(cd $(dirname 'perl'); pwd) # /usr/bin
echo $(cd $(dirname '../bin/perl'); pwd) # /usr/bin

もちろんcdに失敗したらカレントディレクトリの情報返しちゃうので、
test -d $(dirname $HOGE)とかやってチェックするとかして誤魔化す。


this.sh /usr/bin/perl ../../../../../usr/bin/perl
とかやっても、$1と$2は同じ位置だよーって教えるぐらいの使い道。