命令行找不到python3命令
终端找不到python3命令
上次更新完系统后,好像就没在命令行用过Python3
这次使用Python3发现找不到Python3
我是用套件管理工具Homebrew安装的Python3
第一反应是,是不是Python3被删了,然后到相关路径去看发现有Python3
然后,就是猜测环境变量没有设置好
但是知道这个原因,还是在这里花了好多时间
- 环境变量这个名词忘记了,就知道是放置路径的地方
- 找到需要设置的文件后
.bash_profile
时不知道是不是应该在这里设置,我用zsh的,不知道是不是要在.zsh_profile
设置 - 设置的格式不清楚
- 设置完成后,如何让PATH变量生效
source ~/.bash_profile
这里看出我对一些概念不是很熟悉,换句话说就是基础不怎么扎实
这里我补充下涉及到的概念,知识点echo $PATH
echo命令用于在shell中打印shell变量的值,或者直接输出指定的字符串。
$在这里是取得某个变量的值
PATH 就是变量名
合起来就是在控制台显示PATH环境变量的值
会看到下面一长串的东西
1 |
/usr/local/Cellar/python/3.6.1/bin:/usr/local/bin:/usr/local/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/hangyi/Library/Google/:/Users/hangyi/Library/Android/sdk/platform-tools |
分号(:)是分隔的意思
所以当你在terminal里面输入python3时
系统就会开始从/usr/local/Cellar/python/3.6.1/bin
找起
如果在/usr/local/Cellar/python/3.6.1/bin
里面找不到的话
就会往下一个/bin
去搜寻,以此类推
现在,我们回到资料夹去看
python3其实就在/usr/local/Cellar/python/3.6.1/bin
里面
如果不同路径里也有一份python3怎么办,在terminal打python3指令时,会按照路径的顺序来查找python3
可以用sudo vim /etc/paths 来编辑查找顺序
但问题并没有完全解决
终端重开,就找不到Python3命令,每次需要输入source .bash_profile
后才可以使用?
经过查找,现在终于知道是为什么了
需要改的是zsh的配置文件(~/.zshrc
),我一直改的是bash的配置文件,所以每次打开终端都不会自动加载
而我source .bash_profile
加载的bash的,这也解释了,为什么我每次关终端,会提示
“关闭这个窗口将会终止正在运行的进程:python”
我在这里有个误区,我一直把zsh当做是bash的主题美化类的东西,所以.bash_profile
是可以配置zsh的,虽然我知道有zsh也有配置文件。就像bash的优先级是最高的。
那么zsh是什么呢,又有什么优点呢。我知道bash是一个shell。shell又是什么?英文单词是壳的意思。我的理解是用于输入指令控制计算机硬件。
shell是什么?书上是这么说的
在操作系统中,应用程序其实是在最外层,就如同鸡蛋的外壳一样,因此这个咚咚也被称呼为壳程序(shell)了!
其实可程序的功能知识提供使用者操作系统的一个接口,因此这个可程序需要可以调用其他软件才好。有很多命令行命令,man,chmod,chown, vi, fdisk等指令,这些指令都是独立的应用程序,但是我们可以通过可程序(就是命令行界面)来操作这些应用程序,让这些应用程序来运行所需的工作
“也就是说,只要能够操作应用程序的接口都能够称为壳程序。
狭义的壳程序指的是命令行方面的软件,包括本章要介绍的 bash 等。
广义的壳程序则包括图形接口的软件!因为图形接口其实也能够操作各种应用程序来调用核心工作啊!”
摘录来自: 鸟哥. “鸟哥的Linux私房菜——基础学习篇(第四版)”。 chapter10
zsh有什么特点?
这里摘录维基百科上的解释
Z Shell(Zsh) 是一种Unix shell,它可以用作为交互式的登录shell,也是一种强大的shell脚本命令解释器。Zsh可以认为是一种Bourne shell的扩展,带有数量庞大的改进,包括一些bash、ksh、tcsh的功能。
Zsh具有以下主要功能:
- 开箱即用、可编程的命令行补全功能可以帮助用户输入各种参数以及选项。
- 在用户启动的所有shell中共享命令历史。
- 通过扩展的文件通配符,可以不利用外部命令达到find命令一般展开文件名。
- 改进的变量与数组处理。
- 在缓冲区中编辑多行命令。
- 多种兼容模式,例如使用/bin/sh运行时可以伪装成Bourne shell。
- 可以定制呈现形式的提示符;包括在屏幕右端显示信息,并在键入长命令时自动隐藏。
- 可加载的模块,提供其他各种支持:完整的TCP与Unix域套接字控制,FTP客户端与扩充过的数学函数。
- 完全可定制化。
zsh的手册里非常有名的第一句“鉴于zsh有许多功能,手册被分为数个章节”,总计有17章节,可见其手册的长度。
一个叫做“Oh My Zsh”的用户社区收录了Zsh的第三方扩展
可以理解为具有要很多功能的shell,像智能手机,而bash则是功能机,功能较少,但基本的功能都有。
所以这里可以看出bash与zsh是两种不同的shell,所以zsh的配置得单独配置
source命令用法
1 |
source FileName |
source
命令作用
在当前bash环境下读取并执行FileName中的命令。
source命令通常用于重新执行刚修改的初始化文档,如.bash_profile和.profile等等
例如,假如修改了 .bash_profile 中的 Python环境变量,能够用source命令重新执行 .bash_profile 中的命令而不需要关闭终端
参考资料
维基百科
《鸟哥的Linux私房菜——基础学习篇(第四版)》