2
bash関数のエイリアススコーピング
環境をセットアップする一連のエイリアスを作成するスクリプト(書き込みアクセス権がないスクリプト)を使用しています。環境をセットアップするためのbash関数を作成したいのですが、エイリアスが関数本体まで存続しないようです。 これは最小限の例です: # aliases.sh alias fooAlias='echo "this will never work!"' 。 # .bashrc function setupLotsOfThings() { source aliases.sh fooAlias } 。 さて、私が単にaliases.shインタラクティブにソーシングすると、物事は期待通りに機能します: [mycomputer]~/ $ source aliases.sh [mycomputer]~/ $ fooAlias this will never work! ただし、代わりに.bashrcで定義されている関数を呼び出すと、その定義を取得した後にエイリアスが認識されません。 [mycomputer]~/ $ setupLotsOfThings -bash: fooAlias: command not found ここで何が起こっているのですか?alias関数で使用する場合、コマンドのスコープについて何か不足していますか? 編集:私が達成しようとしていることにいくつかの光を当てるために、最小限の例を超えていくつかの詳細を追加します。 私の仕事では、クラスターやグリッドで多くのソフトウェアを開発して実行しています。さまざまなgccバージョン、特定のソフトウェアリリース、構成とデータのPATH、さまざまな環境変数など、まったく異なる環境を必要とするプロジェクトがいくつかあります。管理者は、通常、他の関数やエイリアスを呼び出したり、さまざまなスクリプトを実行したりするシェル関数やエイリアスを定義することによって、さまざまなものを設定するスクリプトを提供します。私にとって、それはブラックボックスです。 一つのコマンドで自分だけの様々な環境をセットアップしたい。現在、私は次のようなことをしています: [mycomputer]~/ $ source /some/environment/setup/script.sh …
9
bash