You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于macOS Terminal中当前使用Shell的确认及基础编程影响的疑问

关于macOS Terminal中当前使用Shell的确认及基础编程影响的疑问

嘿,我来帮你把这个Shell的小困惑掰扯明白!很多刚接触macOS Terminal的同学都会遇到这个问题,别担心,其实逻辑简单得很~

一、你当前实际在用的Shell是什么?

当你在Terminal里输入bash后,顶部显示“bash”,这时候你确实正处在bash的环境里——相当于你从默认的zsh中启动了一个bash子进程,现在所有输入的命令都是由bash来执行的。

要100%确认当前运行的Shell,别用echo $SHELL,改用这个命令更靠谱:

echo $0

这个命令会输出当前正在运行的Shell进程名称

  • 刚打开Terminal还没输入bash时,执行它会输出zsh(因为现在macOS的默认登录Shell是zsh)
  • 输入bash后再执行,就会输出bash,这才是当前真正生效的Shell。

二、为什么echo $SHELL还是显示zsh?

这是最容易搞混的点!$SHELL这个环境变量记录的是你的系统默认登录Shell——也就是每次打开Terminal时,系统自动启动的那个Shell。哪怕你手动切换到bash子进程,这个变量也不会跟着变,它只会指向你设置的默认Shell(macOS默认是zsh)。

打个比方:你默认坐的是zsh的椅子,临时换到bash的椅子上,但系统记录的“默认椅子”还是zsh,$SHELL就是用来告诉你这个默认值的。

三、对于基础编程来说,选bash还是zsh重要吗?

负责任地说:完全不重要

  • 基础编程用到的绝大多数命令(比如cdlsgccpythonnpm这些)都是POSIX标准的,bash和zsh都完美支持。
  • 哪怕你要写简单的Shell脚本(比如批量重命名文件、运行编译命令的小脚本),只要是基础语法,两个Shell也都能正常执行。

当然,zsh有一些额外的便利功能(比如更智能的自动补全、好看的主题插件),但对于刚学编程的你来说,这些都是锦上添花的东西,完全不影响核心的编程操作。

小补充:如果想切换默认Shell怎么办?

要是你真的想把默认Shell改成bash,可以在Terminal里执行:

chsh -s /bin/bash

执行后重启Terminal,下次打开就会默认进入bash了。不过要注意,macOS自带的bash版本比较老(受GPL协议限制),zsh其实是苹果现在主推的,功能也更现代化,你可以慢慢试试~

火山引擎 最新活动