今回はシェルスクリプト内で自分自身の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
を実行して絶対パスを取得しています。