加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 01:46:48 所属栏目:安全 来源:网络整理
导读:我有许多脚本需要指定运行它们的 python二进制文件: #! /home/nargle/python/bin/python2.6 我需要调整这些脚本以在两个不同的站点上工作.很多工具都安装在不同的地方,所以在新的站点2,脚本需要从以下开始: #! /user/nargle/python/bin/python2.6.. 我想用
我有许多脚本需要指定运行它们的 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’modules’包为许多工具设置环境变量,如果我们可以从我们的模块文件中获取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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读