タイトルに記載されているとおりにできますか?
「initstuff.sh」スクリプトがあり、そのスクリプト内に何かを実行するエイリアス「shalias」があるとします。私の.bashrcに「shalias」を置くことは不可能です。これは、コンテキストに「shalias」を含むinitstuff2.sh、「shalias」を含むinitstuff3.sh ...などがあるためです。それぞれは同じ頻度で実行する必要があります。
それでは、端末にログインし、「firstArgVal」および「secondArgVal」パラメータを使用してinitstuff2で「shalias」を実行したいとします。
私の.bashrcには次のものがあります。
alias runinit1=". /initstuff1.sh"
alias runinit2=". /initstuff2.sh"
したがって、これらのパラメータを使用してinitstuff2で "shalias"を実行するには、次の2行が必要です。
$ runinit2
$ shalias -firstArgVal -secondArgVal
一行で実行するにはどうすればよいですか?具体的には、.bashrcに以下を追加したいと思います。
alias runinit2normal:". /initstuff2.sh ; shalias -firstArgVal -secondArgVal
これはうまくいきません。私は次のようになります。
bash: shalias: command not found
runinit2normalを2回呼び出すと、initstuff2.shが最初の呼び出しで実行される機会があるために機能するため、shaliasがすでに存在し、2番目の呼び出しで使用できますが、この種の目的は単一のエイリアスを使用することとは反対になります。このことをすること。代わりに&&を使用すると機能しません。私はそれを関数として実行しようとしましたが、まだ幸運ではなく、奇妙な動作を防ぐために runinit2normal を2回呼び出す別の別名を作成してみました. 2回呼び出すとコマンドラインにあるからです。を呼び出します(したがって一度失敗します)。 bashrcで実際に期待通りに動作する「runinit2normal」エイリアスを作成する方法はありますか?
ベストアンサー1
あなたの質問はフレーズのために理解するのが最も簡単ではありませんが、このbashオプションを設定するとすでに持っていることがうまくいくと思います。
shopt -s expand_aliases