![同じコマンドで複数のバイナリを呼び出す必要がある場合、エイリアスを機能させるにはどうすればよいですか?](https://rvso.com/image/1365809/%E5%90%8C%E3%81%98%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E8%A4%87%E6%95%B0%E3%81%AE%E3%83%90%E3%82%A4%E3%83%8A%E3%83%AA%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B%E5%A0%B4%E5%90%88%E3%80%81%E3%82%A8%E3%82%A4%E3%83%AA%E3%82%A2%E3%82%B9%E3%82%92%E6%A9%9F%E8%83%BD%E3%81%95%E3%81%9B%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
2 つのバイナリ ファイルがあるとします。バイナリ1そしてバイナリ2。
それぞれに独自のオプション セットがあります。オプション1そしてオプション2。
ユーザーは、次の構造に従うコマンドを呼び出す必要があります。
binary1 options1 binary2 options2
しかし、私は設定したいオプション2自分で以下のコマンドを実行させます。
binary1 options1 alias
どこ
alias='binary2 options2'
これを bash/tcsh で動作させる方法はありますか? 私は 64 ビット アーキテクチャ上の SLES 11 SP2 で作業しています。
答え1
binary1 と options1 を開始したいものにする必要がありますか? 次に、関数「something」を定義します。
something () {
options2="...." #you define them as you want, either here or from another source
binary1="$1" ; shift
"$binary1" "$@"
binary2 $options2
}
(bash ログイン ファイルで定義します)
そして走らせます:
something binary1 options1
そうすれば、次のようなオプション1に本当に夢中になることができます。
something touch file1 file2 "file3 with extra spaces" file4
答え2
おそらくすでにお分かりかと思いますが、mpirun はエイリアスの実行を好みません。最善の方法は、実行可能ファイルのラッパーを作成することです。そのため、次のコードをファイルに記述します (実行可能にします)。
#!/usr/intel/bin/tcsh -f
exec /full/path/to/dplace -s1 -c 0-$TOP_PROC $*
このファイルに「dplace」という名前を付け、実際の dplace が見つかるディレクトリより前に検索されるディレクトリ内のユーザー パスに配置すると、代わりにラッパー スクリプトが透過的に実行されます (これを試してみるときは、「再ハッシュ」することを忘れないでください)。
TOP_PROC は既に環境で定義されていると想定します。