$HOME/ulcwe/software_internal.sh
Bashを使用してUbuntu 16.04で呼び出されなかった関数を含むファイルを作成しました。rse()
ファイルのソースは~/.bashrc
独自にインポートされ、rse
端末のどこからでも呼び出すことができ、エラーなしで実行されます。
しかし、私は走ろうとしています。このスクリプトファイル36行目の呼び出しが含まれていますが、rse
次のエラーが発生します。
行36:rse:コマンドが見つかりません。
関数を手動で呼び出すと(rse
Bashで入力して実行)、成功しますが、Bashスクリプトから呼び出すと失敗するのはなぜですか?スクリプトからどのように正常に呼び出すことができますか?
答え1
スクリプトで関数が利用可能であることを確認する必要があります。これは2つの方法で行うことができます。
source
関数定義を含むファイル、またはexport
スクリプトの前に関数を呼び出します(export -f rse
関数がエクスポートされます)。
シェル変数などの関数は、スクリプトによって継承された環境の一部ではありません。環境変数になるには、シェル変数をエクスポートする必要があり、bash
関数もエクスポートできます。
エクスポートされた関数を呼び出すことはできません。どのプロセスを続行するには、他のスクリプトを見てくださいbash
。