如何让shebang使用环境变量的值

问题描述 投票:0回答:1

我有一个名为

kong
的文件,如下所示:

#!/usr/bin/env /usr/local/openresty/bin/resty 

setmetatable(_G, nil)
pcall(require, "luarocks.loader")

package.path = "./?.lua;./?/init.lua;" .. package.path

require("kong.cmd.init")(arg)

我可以直接执行它,就像

kong start

但是我想使用环境变量来自由修改

resty
路径。比如我设置了一个环境变量
export CURR_RESTY_PATH="XXXX"
,然后像这样修改
kong

#!/usr/bin/env ${CURR_RESTY_PATH}

如果

/usr/bin/env: ${CURR_RESTY_PATH}: No such file or directory
我会得到
kong start

我的问题是如何修改

#!/usr/bin/env
以使用环境变量?

linux shell environment-variables shebang
1个回答
0
投票

我的问题是如何修改

#!/usr/bin/env
以使用环境变量?

你不能。有一些可怕的、丑陋的黑客——但在现实世界中(我们需要可靠的东西,即使将来程序被重写以使用两遍解析器,

seek()
从头开始并重新读取它们的源文件) ,使用单独的脚本。

例如,您可以将旧的

kong
重命名为
kong.real
,然后创建一个如下所示的
kong
脚本:

#!/usr/bin/env bash
exec "${CURR_RESTY_PATH:-/usr/local/openresty/bin/resty}" "${BASH_SOURCE}.real"
© www.soinside.com 2019 - 2024. All rights reserved.