かべぎわブログ

技術的なことについてかけたらいいな…

【シェルスクリプト】自分自身のPATHを取得する方法【絶対パス/相対パス】

今回はシェルスクリプト内で自分自身のPATHを取得する方法を紹介します。

相対パスを取得する

以下のようなスクリプトを用意します。

#!/bin/bash
dirname ${0}

たとえば/home/user/kabegiwa配下にsoutai_path.shとして上のスクリプトを用意した場合、実行結果としてはこんなかんじ。

[root@kabegiwa]# /home/user/kabegiwa/soutai_path.sh
/home/user/kabegiwa

[root@kabegiwa]# ../user/kabegiwa/soutai_path.sh
../user/kabegiwa

やってることは単純です。
シェルスクリプト${0}には現在実行されているシェルスクリプト相対パスが格納されています。
それをディレクトリのパスを取り出すコマンドであるdirnameに渡すことによって相対パスを取得することができます。

補足ですがファイル名を取得することができるbasenameというコマンドもあります。

絶対パスを取得する

以下のようなスクリプトを用意します。

#!/bin/bash
echo `cd $(dirname ${0}) && pwd`

たとえば/home/user/kabegiwa配下にzettai_path.shとして上のスクリプトを用意した場合、実行結果としてはこんなかんじ。

[root@kabegiwa]# ./zettai_path.sh
/home/user/kabegiwa

[root@kabegiwa]# ../user/kabegiwa/zettai_path.sh
/home/user/kabegiwa

絶対パスの場合は相対パスよりちょっと複雑になります。
なにをしているかというとcdスクリプトのあるディレクトリまで移動したあとにpwdを実行して絶対パスを取得しています。