シェルスクリプトを作成していると実行しているスクリプト自身の絶対パスを取得したくなる時がある。
そんな時は以下のようにするとよい 。
#!/bin/bash
SCRIPT_DIR=$(cd $(dirname $0) ; pwd)/
echo "${SCRIPT_DIR}"
説明
dirname $0
スクリプトのあるディレクトリの相対パスを取得する。
$(cd $(dirname $0)
スクリプトのあるディレクトリに移動する。
SCRIPT_DIR=$(cd $(dirname $0) ; pwd)
カレントディレクトリがスクリプトのディレクトリになるのでpwdでカレントディレクトリのパスを取得する。
コマンド置換はサブシェル環境で実行されるのでスクリプトディレクトリ取得後にカレントディレクトリは変更されない。