対話型シェルで使用するためにprofile.dスクリプトから関数をエクスポートするにはどうすればよいですか?

対話型シェルで使用するためにprofile.dスクリプトから関数をエクスポートするにはどうすればよいですか?

いくつかのスクリプトがインストールされています。/etc/profile.dエクスポートしてコマンドラインで使用できる機能を定義します。サンプルスクリプトは次のとおりです。

# This function should be available as a command.
function gcd () {
}

# Bash completions for gcd
_gcd_completions () {
}

complete -F _gcd_completions gcd

gcdこれにより、端末で名前付きコマンドを使用できるようになります。

ログインシェルではうまく機能しますが、インタラクティブシェルでは機能しません(「gcd」コマンドが見つかりません)。まるでX11にログインし、そこからコンソールを起動したようです。

会話が見つかりましたここエクスポートした関数を使用することをお勧めしますexport -f。私は以前試しました:

# This function should be available as a command.
function gcd () {
}

# Bash completions for gcd
_gcd_completions () {
}

export -f gcd
complete -F _gcd_completions gcd

しかし、これは行動を変えませんでした。

export私も試してみましたがdeclare -fxダメです。

X端末から直接移動すると、source /etc/profileコマンド(および補完、fwiw)が機能し始めることがわかりました。だから私は構文を知っており、すべてが少なくとも正確です。/etc/設定ファイルスクリプトの実行とコマンドの設定。これらの対話型シェルコンソールでは自動的には機能しません。

また、他の環境で宣言したいくつかの環境変数も確認しました。/etc/profile.dスクリプトは対話型シェルで使用できるため、/etc/設定ファイルこのシェルで何かが行われています。

どうすればいいですか?

関連情報