构建一个适用于多个可执行文件的包装器脚本

时间:2015-02-05 22:52:54

标签: bash

所以我有一个有两个可执行文件的gem,runrun_nohup。我创建了一个可执行文件,我在其中添加了执行run所需的所有环境内容,并在路径中添加了这些内容。

示例:

env variable1=value variable2=value /opt/my_gem/bin/run "$@"

现在我的问题是,是否有另一种方法可以为run_nohup做同样的事情而不重复这项工作?我问这个是因为,我正在用厨师安装所有这些,这需要我创建更多模板,基本上复制旧模板,除了我调用run_nohup的最后一部分。

1 个答案:

答案 0 :(得分:1)

$0是用于调用当前程序的名称;因此,您可以查看它以确定您的调用方式或操作方式(在下面的例子中,剥离目录名称并仅使用文件名):

#!/bin/sh
exec env variable1=value variable2=value /opt/my_gem/bin/"${0##*/}" "$@"

您可以将此单个可执行文件保存在名为runrun_nohup的两个文件中(如果您愿意,可以将它们硬链接在一起),它将从{{{{{{{ 1}}用于调用它的名称。


除此之外:让shell导出环境更新而不是通过/opt/my_gem/bin进行调用会稍微有效(节省几微秒):

env