所以我有一个有两个可执行文件的gem,run
和run_nohup
。我创建了一个可执行文件,我在其中添加了执行run
所需的所有环境内容,并在路径中添加了这些内容。
示例:
env variable1=value variable2=value /opt/my_gem/bin/run "$@"
现在我的问题是,是否有另一种方法可以为run_nohup
做同样的事情而不重复这项工作?我问这个是因为,我正在用厨师安装所有这些,这需要我创建更多模板,基本上复制旧模板,除了我调用run_nohup
的最后一部分。
答案 0 :(得分:1)
$0
是用于调用当前程序的名称;因此,您可以查看它以确定您的调用方式或操作方式(在下面的例子中,剥离目录名称并仅使用文件名):
#!/bin/sh
exec env variable1=value variable2=value /opt/my_gem/bin/"${0##*/}" "$@"
您可以将此单个可执行文件保存在名为run
和run_nohup
的两个文件中(如果您愿意,可以将它们硬链接在一起),它将从{{{{{{{ 1}}用于调用它的名称。
除此之外:让shell导出环境更新而不是通过/opt/my_gem/bin
进行调用会稍微有效(节省几微秒):
env