假设我有两个二进制文件:二进制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 已经在环境中定义。