繁体   English   中英

如何使用bash脚本从其他目录运行代码

[英]How do I run code from a different directory with a bash script

我一直将代码放在github上,但是遇到了实施障碍。 我在许多计算机(包括没有root用户访问权限的计算机)上运行相同的代码。

一段代码(一个bash脚本)调用了一些python代码,例如:

python somecode.py

外壳程序将运行正确版本的python,但找不到somecode.py。

我试过的

失败#1:我尝试将包含somecode.py的目录和文件的完整路径添加到PATH; 无济于事。 [Errno 2]没有这样的文件或目录

失败#2:如果我在第一行中将完整路径添加到python的正确版本中,则只能使其在一台计算机上工作:

#!/usr/local/cool/python/version/location

但是,这破坏了它在其他任何计算机上运行的能力。

失败#3:如果我让bash脚本说:

python /full/path/to/github/place/somecode.py

但同样,这仅适用于一台计算机,因为不同计算机的路径不同。

我真正想做的是 :我希望能够在多台计算机上使用相同的代码(bash脚本和somecode.py)。

欢迎提供任何有关如何正确执行此操作的建议。 谢谢!

添加:

#!/usr/bin/env python

在我的somecode.py代码顶部;

mv somecode.py somecode
chmod +x somecode

确保PATH具有/ full / path / to / directory / with / somecode。

Bash脚本现在只说:

somecode

而且有效。

对于问题2,请尝试

#!/usr/bin/env python

尽管它可能会在不同的机器上找到不同版本的Python,但是只要这不是问题,就应该解决该特定问题

参见Python部署和/ usr / bin / env可移植性的问题 Alex Martelli的这篇帖子重用了此内容。

如果您说python somefile.py ,它将把somefile.py的位置作为当前目录,而不是来自$PATH 它将从$PATH python的位置。

如果您说somefile.py ,它将从$PATH中获取somefile.py的位置,并从#!中获取python的位置#! python脚本的一行,如果您遵循@Levon的建议,则可以使用PATH。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM