gpt4 book ai didi

bash - 来自 shell 变量的 shebang 脚本解释器

转载 作者:行者123 更新时间:2023-11-29 09:10:24 25 4
gpt4 key购买 nike

我有许多脚本需要指定运行它们的 python 二进制文件:

#! /home/nargle/python/bin/python2.6

我需要调整这些脚本以在两个不同的站点上工作。许多工具安装在不同的地方,因此在新站点 2 中,脚本需要以:

#! /user/nargle/python/bin/python2.6
..

我想用为每个站点设置不同的环境变量替换直接引用的路径。我想要的是让它起作用:

#! $MY_PYTHON_PATH

但事实并非如此!我对在哪里研究这个有点模糊。是正在执行的 shell(无论是 bash、csh 还是其他什么)检测到 '#!'在脚本的开头(无论是 bash、python 还是其他什么)并启动解释器/shell 来运行它?

我觉得一定有办法做到这一点。请指教!

哦,是的,还有一个限制条件:我们不能为此使用路径。这似乎是一个愚蠢的限制,但这是针对具有许多用户的大型环境

环境为RHEL 5.7。

编辑 建议使用 shell 脚本,这是当前的计划:它工作正常:

 $MY_PYTHON_PATH some_script file.py $@

问题确实是我们有很多人在使用 python 文件,还有很多需要更改的自动化测试。如果必须完成,那就必须完成,但如果可能的话,我想尽量减少改变工作方式对许多人的影响。

编辑 也可能在两个系统上的相同位置有一个链接,并且链接到每个系统上不同目标中的真实二进制文件。这是非常可行的,但看起来有点困惑:我们使用 linux“模块”包为许多工具设置环境变量,如果我们可以从我们的模块文件中获取 python 路径,那就太好了。

编辑 这不是答案,但这感觉就像我一直在寻找的那种邪恶黑客: http://docs.nscl.msu.edu/daq/bluebook/html/x3237.html.. 参见“示例 4-2。#! bash 和 tclsh 的行”

编辑我希望这可能会起作用,但它没有:

!# /usr/bin/env PATH=$PATH:$MY_PYTHON_PATH python2.6

最佳答案

常见的解决方案是将 shebang 更改为

#!/usr/bin/env python2.6

然后,只需将您的 $PATH 指向每台机器上正确的 python2.6。

关于bash - 来自 shell 变量的 shebang 脚本解释器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14498588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com