source my_bashrc.sh
bashの設定を読み込むときに、カレントディレクトリを知りたいというか、実行されている自分自身のファイルを知りたい
$0
で取れるだろうと思ったら甘かった。
my_bashrc
#!/bin/bash echo $0
source してみる。
$source my_bashrc.sh -bash
あっ、、駄目っぽい。
替わりの環境変数を使う
__FILE__ があればいいんだけど、bashにはないので別の環境変数を探すことに
my_bashrc
ファイルで使える変数をプリントして
#!/bin/bash declare -p printenv
使えそうなものを探す
$source my_bashrc.sh | grep bashrc declare -a BASH_ARGV=([0]="./my_bashrc.sh") declare -a BASH_SOURCE=([0]="./my_bashrc.sh") declare -r SCRIPT_NAME="/Users/takuya/Desktop/my_bashrc.sh" declare -- _="my_bashrc.sh"
なるほど、この辺が使える。
使ってみた
my_bashrc
#!/bin/bash echo ${SCRIPT_NAME} echo $(readlink -f ${BASH_SOURCE[0]}) echo $(readlink -f ${BASH_ARGV[0]} )
行けそう。
$ source my_bashrc.sh
/Users/takuya/Desktop/my_bashrc
/Users/takuya/Desktop/my_bashrc
/Users/takuya/Desktop/my_bashrc
結論
source されるファイルで、自分自身($0 / __FILE__ ) を知るためには次を使う。
echo ${SCRIPT_NAME}