终端可运行Python但Bash脚本提示python命令不存在的解决方法
解决Bash脚本中
python命令未找到的问题 问题原因
你在~/.bashrc里设置的alias python=python3只对交互式shell生效(比如手动打开的终端窗口),而Bash脚本运行时属于非交互式非登录shell,默认不会加载~/.bashrc里的别名配置,也不会继承终端里的别名,所以脚本里识别不了python命令。
解决方法
方法一:直接在脚本中使用
python3(最稳妥)
把start.sh里的命令改成:#!/bin/bash python3 hello-world.py这种方式不依赖任何别名配置,兼容性最好,能避免后续环境变动带来的问题。
方法二:让脚本加载
~/.bashrc的别名
如果坚持要用python别名,可以在脚本开头添加source ~/.bashrc来加载配置:#!/bin/bash source ~/.bashrc python hello-world.py注意:默认Ubuntu的
~/.bashrc开头有# If not running interactively, don't do anything的判断逻辑,会阻止非交互式shell加载后续配置。需要你打开~/.bashrc,注释掉这段判断(或者把别名放在这段判断之前),才能让脚本成功加载别名。方法三:系统级设置
python指向python3
通过update-alternatives命令建立系统级的软链接,让python命令全局指向python3,这样终端和脚本都能直接用python:sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1设置完成后,不管是终端手动执行还是脚本运行,
python命令都会自动调用python3。
内容的提问来源于stack exchange,提问作者Robb1
相关产品推荐
相关产品推荐

