毎回調べてるので使い方メモ
スクリプトの配置位置、実行位置を気にせずにスクリプトの実行をしたい
相対パスから絶対パスへの変換に使用する
実装
スクリプトの絶対パスの取得
SCRIPT_DIR=$(cd $(dirname $0); pwd)
-
$0
で実行コマンドを取得 -
dirname
でベースディレクトリを取得 - サブシェル内で
cd
で移動 -
pwd
で絶対パスの取得
使用例
test.sh
#!/bin/bash
SCRIPT_DIR=$(cd $(dirname $0); pwd)
echo $SCRIPT_DIR
使用例
$ ./test.sh
/tmp
$ mkdir hoge
$ cd hoge/
$ ../test.sh
/tmp
どこから実行してもパスは変化しない