关于Mac中的shell

1 MacOS中的shell

介绍:

在 macOS 系统中,Shell 是命令行与系统交互的工具,用于执行命令、运行脚本和管理系统。macOS 提供了多种 Shell,主要包括 bash 和 zsh。在 macOS Catalina(10.15)之前,bash 是默认的 Shell,这是一种经典的 Shell,广泛应用于 Unix 和 Linux 系统中,语法简单且稳定,适合运行脚本和执行命令。然而,由于 bash 的许可证问题(GPLv3),自 Catalina 开始,Apple 将默认 Shell 切换为 zsh。相比 bash,zsh 提供了更丰富的功能,如强大的自动补全、灵活的插件系统和个性化主题(如 oh-my-zsh),适合现代开发者和系统管理员使用。macOS 通过 终端(Terminal) 或更现代化的 iTerm2 工具为用户提供 Shell 访问入口,同时支持用户在多种 Shell 之间自由切换,满足不同需求。

zsh 的优势

1自动补全:

zsh 的补全功能比 bash 更强大,可以根据上下文智能补全命令和文件。

配合插件管理框架(如 oh-my-zsh),支持 Git 补全、语法高亮等功能。

2主题与美化

zsh 支持丰富的主题(如 Powerlevel10k),可以显示更多的信息(如当前目录、分支状态、时间等)。

3插件支持

zsh 提供了灵活的插件系统,像 oh-my-zsh 或 zinit 让用户可以轻松扩展功能。

4强大语法扩展:

更强的路径通配符(**)、更灵活的数组操作等。

如下图为bash环境:

切换到 zsh:

复制代码
chsh -s /bin/zsh

node.js在bash中可以显示,在zsh中呢?

zsh 中并不是没有 Node.js 和 npm,而是目前终端运行环境已经切换到 bash,而 zsh 环境下可能未正确配置 Node.js 和 npm 的路径(PATH)。因此,如果直接切换到 zsh,可能会出现找不到 Node.js 和 npm 的情况。

原因

当执行 bash 命令后,终端从默认的 zsh 切换到了 bash,并成功执行了 node -v 和 npm -v,表明 Node.js 和 npm 已经在系统中安装。

解决方法

1、检查 zsh 环境下的 PATH 配置

在 zsh 环境下运行以下命令,检查是否包含 Node.js 和 npm 的路径:

复制代码
echo $PATH

正常情况下,Node.js 应该安装在路径 /usr/local/bin 或 ~/.nvm/versions/node/... 中。如果缺少这些路径,则需要手动添加。

2、添加 Node.js 和 npm 到 zsh 的 PATH

打开 ~/.zshrc 文件,添加 Node.js 的路径。可以使用以下命令编辑:

复制代码
nano ~/.zshrc

在文件末尾添加类似以下内容(根据你的安装路径调整):

复制代码
export PATH="/usr/local/bin:$PATH"

如果使用的是 nvm(Node.js 版本管理工具),则可以添加:

复制代码
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion

保存后,运行以下命令使配置生效:

复制代码
source ~/.zshrc

3、测试 Node.js 和 npm

切换到 zsh 环境后,运行以下命令确认配置是否成功:

复制代码
node -v
npm -v

为啥bash仍然存在?

1兼容性

bash 是经典的 Shell,许多历史遗留的脚本和工具依赖它,尤其是在老版本的 macOS 或从 Linux 系统移植的程序中。

2用户习惯

对于熟悉 Linux 系统的用户来说,bash 是他们习惯的环境。macOS 保留 bash 是为了满足这些用户的需求。

3系统支持

macOS 内置了一些与 bash 脚本兼容的系统功能和管理工具,因此 bash 不会被完全移除。

2 Windows中的shell

介绍

Windows 系统的 Shell 主要有两种:CMD(命令提示符) 和 PowerShell。CMD 是一种经典的 Shell,最早继承自 MS-DOS,主要用于运行简单命令和批处理脚本(.bat 文件)。它操作直观,但功能较为有限,主要面向普通用户和早期的 Windows 系统。与之相比,PowerShell 是微软推出的新一代 Shell,基于 .NET 框架开发,功能更加强大,支持丰富的命令集(cmdlet)、对象操作以及高级脚本编写(.ps1 文件)。PowerShell 不仅适用于 Windows 系统,还在其核心版本(PowerShell Core)中实现了跨平台支持,能够在 Linux 和 macOS 上运行。近年来,微软推出了 Windows Terminal,整合了 CMD、PowerShell 和 Windows Subsystem for Linux(WSL),为用户提供了一个统一的命令行工具,带来更好的多环境支持和用户体验。

powershell的优势

1丰富的命令集:

PowerShell 提供了大量内置命令,称为 cmdlet,功能远超 CMD,可以用于系统管理、文件操作和网络任务等。

例如,Get-Process 可以直接查询和管理系统进程,而 CMD 需要通过较复杂的工具实现类似功能。

2面向对象的操作:

PowerShell 不仅传递文本,还可以直接操作对象。例如,查询进程时,可以直接访问进程对象的属性(如名称、ID)并对其进行操作。

3脚本支持:

PowerShell 支持编写复杂脚本(.ps1 文件),可完成自动化任务,例如批量管理用户权限、文件备份等,大大提高效率。

4跨平台:

通过 PowerShell Core,用户可以在 Windows、Linux 和 macOS 上运行相同的命令和脚本,提供一致的跨平台体验。

相关推荐
17715574312 分钟前
Mac 上 Ruby、gem、rvm、CocoaPods 四者关系通俗讲清楚
macos·ruby·cocoapods
Shell运维手记20 分钟前
交换机(二层交换机)完整工作原理
运维·网络·网络协议·macos·交换机
寒水馨1 小时前
macOS下载、安装 Tailwind CSS-v4.3.3(附安装包tailwindcss-macos-arm64)
前端·css·macos·tailwind css·utility-first·css 框架·实用优先
寒水馨2 小时前
macOS下载、安装neovim-v0.12.4(附安装包nvim-macos-arm64.tar.gz)
macos·vim·lua·文本编辑器·终端·lsp·neovim
库奇噜啦呼14 小时前
【iOS】NSOperation与NSOperationQueue
macos·ios·cocoa
a44931536220 小时前
MacBook 转轴屏线断裂故障分析——eDP 排线更换与转轴维护
macos·电脑
奶糖 肥晨1 天前
mac系统中Java项目环境配置与问题解决全记录|环境准备篇:JDK与Maven安装配置
java·macos·maven
带娃的IT创业者1 天前
原生体验的回归:深入解析 TREK —— 专为 Apple Silicon 打造的轻量级容器方案
macos·docker·虚拟化·开源项目·容器化·apple silicon·trek
万里浮云1 天前
Typora -mac版本永久免费
macos
奶糖 肥晨1 天前
mac系统中Java项目环境配置与问题解决全记录| 项目构建篇:Maven编译与打包
java·macos·maven