私のファイルに定義された関数があります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
。これは、移植性に優れ、特定の方法で設定された環境に依存しません。