BASHで__FILE__や__DIR__みたいなもの

シェルスクリプト
https://www.pakutaso.com/20161154306post-9416.html
この記事は約2分で読めます。

シェルスクリプト(BASH限定ですが)、他の言語でもよく見られる__FILE__や__DIR__みたいなことをするにはどのようにすれば良いか、と考えてみた結果以下のようになった。小生のシェルスクリプトスキルが高くないので何ともだが上手く動いているようだ。もっと良いやり方があるかもしれない。クロスシェル対応できたらと思ったが、他のシェルスクリプトのスキルがほぼないので今後の課題とする。。

それぞれのsource先でBASH_SOURCE変数を参照する方法でも良いが、シンボリックリンクの場合に絶対パスを取得できないので、一枚関数をかましている。resolve_linkの方法は参考リンクを参照させていただいた。readlink-fオプションが使えない場合でも動く。

以下のようなファイル構成で試してみる。環境はMax OS X。

foo.sh

hello.sh

barの実行。__FILE__でちゃんとbarの参照先foo.shの絶対パスが表示されているようだ。

foo.shの実行。

参考リンク

  • http://qiita.com/yudoufu/items/48cb6fb71e5b498b2532
  • http://qiita.com/edvakf@github/items/b8400f7dfe9210aadddd

コメント

タイトルとURLをコピーしました