我有一个名为
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
以使用环境变量?
我的问题是如何修改
以使用环境变量?#!/usr/bin/env
你不能。有一些可怕的、丑陋的黑客——但在现实世界中(我们需要可靠的东西,即使将来程序被重写以使用两遍解析器,
seek()
从头开始并重新读取它们的源文件) ,使用单独的脚本。
例如,您可以将旧的
kong
重命名为 kong.real
,然后创建一个如下所示的 kong
脚本:
#!/usr/bin/env bash
exec "${CURR_RESTY_PATH:-/usr/local/openresty/bin/resty}" "${BASH_SOURCE}.real"