Linux/Unix 产品一般默认的都是使用 bash。
从 bash 切换到 zsh
从 zsh 切换回 bash
zsh 和 bash 的环境变量
bash 的环境变量是.bash_profile文件。
zsh 的环境变量是.zshrc文件。
PS:如果从 bash 切换到 zsh,但想保留 bash 所设置的环境变量,可在 .zshrc文件末尾添加 source ~/.bash_profile 保存退出,并重启终端即可使用 bash 的环境变量。
本文是关于zsh (不是 oh-my-zsh ) 与bash的对比,主要参考(翻译)自 Quora上的一个回答 以及 stackexchange上的一些讨论 。 标题不用vs是不想让读者产生二选一的想法。
早期Unix上的shell是由 Ken Thompson 在贝尔实验室完成的,用于Unix 1-6版(Ken Thompson也是Unix和B语言的创造者之一),目前已经不再使用了。
后来, John Mashey 在Unix的PWB版本(一个专门面向程序开发者组织的版本)上对Ken Thompson的shell进行了改进,增加了shell变量(环境变量的前身),脚本执行能力,中断处理以及新的控制结构。
在Unix v7版中, Stephen R. Bourne 完整的重写了shell,也就是我们现在所说的sh,全称 Bourne shell 。它的二进制文件为 /bin/sh ,但是目前的*nix发行版大多将这个文件替换为了指向其它shell的硬链接或者软链接,或者干脆是bash的posix选项重编译版,比如我的mac上是,sh实际上是bash:
有人在 这里 讨论了mac上这个蛋疼的问题。
而目前*nix系统上的默认shell,bash, Bourne-Again shell ,是GNU对sh的重写,bash在功能上是sh的超集。
其它的shell,像csh、zsh则各有所长,但是对posix标准的支持没有bash那么严格,因此在大多数的shell脚本教程中,仍然是推荐使用 #!/bin/bash 做解释器,
这也是为什么目前很多*nix系统使用bash作为默认shell的原因之一。
从一个交互式终端的角度来讲,zsh更为强大,但是作为脚本解释器,bash更加符合posix标准,因此, 建议读者日常使用zsh(配合 oh-my-zsh ),但是使用bash做脚本解释器。
前几天将shell从bash切换到zsh之后, 发现以前的在bash配置的环境变量失效了
,pyenv,node等没法加载到。
1 、在bash下面执行:
echo $PATH
查看系统路径,复制路径。
2、然后切换到zsh,
sudo vim ~/.zshrc
在 If you come from bash you might have to change your $PATH. 下面添加刚才的路径:
export PATH=" you path copy just now "
3、退出文件,在zsh下执行:
source ~/.zshrc
初始化配置文件。
搞定,以上。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)