bashrcで以下のように関数を定義することができる。
myfunction() { echo "Hello" }
定義した関数はコマンドとして使えるようになる。
$ myfunction Hello
この関数を内部で使用するスクリプトを書いてみた。
#!/bin/bash myfunction
このスクリプトを実行すれば、定義した関数も実行されるはずだ。つまり、以下のような動作を期待しているわけだ。
$ ./hoge.sh Hello
しかし、実際はこうなる。
$ ./hoge.sh
./hoge.sh: 行 2: myfunction: コマンドが見つかりません
それもそのはず。定義したmyfunction
は、他の関数で使えるようにエクスポートされていないのだ。
bashrcに以下のようにエクスポート文を書けばうまくいく。
myfunction() { echo "Hello" } export -f myfunction
試しにスクリプトを実行してみよう。
$ ./hoge.sh Hello
うまくいった。