シェルスクリプトを実行している絶対パスを取得する

シェルスクリプトで実行しているディレクリ名を取得する場合「dirname ${0}」でディレクトリ名を取得できます。

但し、実行時に相対パスで実行するとディレクトリ名も相対パスとなります。
下記のスクリプトでは、「$0」で実行したコマンド名が取得できます。その値を「dirname」コマンドでディレクトリ名を取得していますので、相対パスで実行した場合は相対パスとなります

$ vi /home/admin/bin/test.sh

#!/bin/bash
dirname ${0}

$ sh bin/test.sh
bin

絶対パスで実行しているディレクトリ名を取得するには、「cd」コマンドでシェルスクリプトの実行しているディレクトリに移動してから、「pwd」で絶対パスを実行すれば取得できます
$ vi /home/admin/bin/test.sh
#/bin/bash

cd `dirname $0`
pwd

$ sh bin/test.sh bin
/home/admin/bin

また、1行でまとめる場合は、以下のようにすれば1行で変数に絶対パスをいれれます
$ vi /home/admin/bin/test.sh

#/bin/bash
SCRIPT_DIR=$(cd $(dirname $0); pwd)
echo $SCRIPT_DIR

$ sh bin/test.sh bin /home/admin/bin

 

スポンサーリンク