![當我需要在同一命令中呼叫多個二進位時,如何讓別名發揮作用?](https://rvso.com/image/1365809/%E7%95%B6%E6%88%91%E9%9C%80%E8%A6%81%E5%9C%A8%E5%90%8C%E4%B8%80%E5%91%BD%E4%BB%A4%E4%B8%AD%E5%91%BC%E5%8F%AB%E5%A4%9A%E5%80%8B%E4%BA%8C%E9%80%B2%E4%BD%8D%E6%99%82%EF%BC%8C%E5%A6%82%E4%BD%95%E8%AE%93%E5%88%A5%E5%90%8D%E7%99%BC%E6%8F%AE%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
假設我有兩個二進位檔案:二進制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 的目錄之前進行搜索,那麼它將透明地運行包裝器腳本(請記住在您使用時“rehash”)正在嘗試這個)。
我假設 TOP_PROC 已經在環境中定義。