You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下Shell脚本无法识别Python命令的问题求助

Ubuntu下Shell脚本无法识别Python命令的问题求助

嘿,我来帮你捋捋这个问题~

首先得纠正你一个小误解:你在.bashrc里设置的PYTHONPATH是用来让Python解释器查找第三方模块的路径,和系统查找python这个可执行命令的路径完全没关系,这个设置解决不了当前的问题,甚至是多余的哦。

接下来说说为什么终端里能跑python,脚本里就不行:
Ubuntu 22.04默认只预装了python3,没有python这个原生命令。你手动在终端里能输入python运行,大概率是你之前在交互式shell里设置了别名(比如alias python=python3),或者自己创建了软链接,但别名只在交互式shell里生效,脚本运行的时候用的是非交互式shell,不会加载.bashrc里的别名配置,所以脚本自然找不到python命令。

给你几个实用的解决方法,按推荐优先级排序:

  • 方法一(最推荐,符合Ubuntu规范):直接在脚本里用python3代替python
    修改你的脚本成这样:

    #!/bin/bash
    python3 hello.py
    

    因为Ubuntu系统里默认的Python3就是你用的3.10版本,这样最稳妥,也不会有环境依赖问题。

  • 方法二(一劳永逸,适合习惯用python命令的情况):给python3创建全局软链接
    打开终端运行这个命令(需要sudo权限):

    sudo ln -s /usr/bin/python3 /usr/bin/python
    

    这样不管是交互式shell还是脚本里,输入python都会指向系统自带的python3,以后就不用再纠结这个问题了。

  • 方法三(最直接,不依赖环境):在脚本里用Python的绝对路径
    你可以先在终端里用which python3命令确认Python3的绝对路径(一般就是/usr/bin/python3),然后把脚本改成:

    #!/bin/bash
    /usr/bin/python3 hello.py
    

    这种方式完全不依赖环境变量,肯定能找到命令。

  • 方法四(不推荐,可移植性差):让脚本加载别名配置
    如果你的python是通过.bashrc里的别名实现的,可以在脚本开头加上这两行:

    #!/bin/bash
    shopt -s expand_aliases
    source ~/.bashrc
    python hello.py
    

    但这种方法不推荐,因为脚本的运行会依赖你的个人配置,换个机器可能就失效了。

最后可以验证下:你在终端里输入which python,如果输出是空的,就说明系统确实没有python这个命令;如果有输出,对比下脚本运行时的PATH(可以在脚本里加一行echo $PATH运行看看),看这个路径在不在里面。

备注:内容来源于stack exchange,提问作者Ogiad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 09:53:00