さまざまなスクリプトで使用できるBash関数を定義する方法

さまざまなスクリプトで使用できるBash関数を定義する方法

私のファイルに定義された関数がありますbash~/.bashrcこれにより、シェル端末で使用できます。ところでスクリプトから呼び出してみると存在しないようです。

bashスクリプトで使用できる関数をどのように定義できますか?

ベストアンサー1

~/.bash_profileスクリプトとして読み込まれず、デフォルトで~/.bashrcは関数はエクスポートされません。これを行うには、export -f次のように使用できます。

$ cat > script << 'EOF'
#!/bin/bash
foo
EOF
$ chmod a+x script
$ ./script
./script: line 2: foo: command not found
$ foo() { echo "works" ; } 
$ export -f foo
$ ./script
works

export -f foo~/.bash_profileこの関数は、ログイン後にスクリプトで使用できるように呼び出すこともできます。携帯できませんのでご注意くださいexport -f

より良い解決策はを使用することです. file。これは、移植性に優れ、特定の方法で設定された環境に依存しません。

おすすめ記事