我正在try 通过一个Bash脚本运行一个Python程序.当我通过shell 执行python文件时,它可以正常工作,但当我try 执行脚本时,关键字python无法识别.

我有一个新的Ubuntu 23.10安装,我在~/.bashrc文件的顶部添加了以下行:

alias python=python3

如何解决这个问题?

玩具样例

为了简单起见,我制作了一个显示相同行为的玩具示例.

我有一个hello-world.py的文件,其内容很简单

print("你好,世界!")

如果我用shell ($ python hello-world.py)运行它,它可以流畅地工作:

你好,世界!

现在我创建了一个脚本start.sh,其内容是:

#!/bin/bash

python hello-world.py

但是,如果我执行它$ ./start.sh次,我会得到以下错误:

./start.sh:第3行:未找到命令

推荐答案

因此,问题是您的shebang没有将bash作为登录shell 运行(这是很正常的).您在.bashrc中将python别名为python3,但这只能在登录shell 中运行.因此,try 添加以下内容:

#!/bin/bash -l 

回到你的生活

不过,需要说明的是,我会认为这是一次黑客攻击.我建议您最好在shell 脚本中使用python3.

或者,创建符号链接.如果您使用的是ubuntu,则可以使用python-is-python3:

https://packages.ubuntu.com/focal/python-is-python3

Python相关问答推荐

重命名变量并使用载体中的字符串存储 Select 该变量

如何使用scikit-learn Python库中的Agglomerative集群算法以及集群中声明的对象数量?

更改Seaborn条形图中的x轴日期时间限制

使用多个性能指标执行循环特征消除

如何使用SubProcess/Shell从Python脚本中调用具有几个带有html标签的参数的Perl脚本?

如何从具有多个嵌入选项卡的网页中Web抓取td类元素

提取两行之间的标题的常规表达

Pydantic 2.7.0模型接受字符串日期时间或无

从numpy数组和参数创建收件箱

如果值不存在,列表理解返回列表

在Wayland上使用setCellWidget时,try 编辑QTable Widget中的单元格时,PyQt 6崩溃

Python键入协议默认值

如何更改分组条形图中条形图的 colored颜色 ?

如何使用pytest来查看Python中是否存在class attribution属性?

如何并行化/加速并行numba代码?

Django—cte给出:QuerySet对象没有属性with_cte''''

如何在FastAPI中为我上传的json文件提供索引ID?

使用Python和文件进行模糊输出

判断solve_ivp中的事件

如何创建引用列表并分配值的Systemrame列