当前位置: 首页 > news >正文

关于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 上运行相同的命令和脚本,提供一致的跨平台体验。

http://www.lryc.cn/news/517098.html

相关文章:

  • 【npm依赖包介绍】借助rimraf依赖包,在用npm run build构建项目时,清空dist目录,避免新旧混合
  • 爬虫学习记录
  • Java Spring Boot实现基于URL + IP访问频率限制
  • C4D2025 win版本安装完无法打开,提示请将你的maxon App更新至最新版本,如何解决
  • 微信小程序实现登录注册
  • SpringBoot环境和Maven配置
  • 大语言模型训练所需的最低显存,联邦大语言模型训练的传输优化技术
  • 1.07 标准IO
  • 恒压恒流原边反馈控制芯片 CRE6289F
  • Java中线程中断的几种方式,你了解吗?
  • Tesseract5.4.0自定义LSTM训练
  • centOS7
  • HTML5 弹跳动画(Bounce Animation)详解
  • 4.1.3 串
  • 国产编辑器EverEdit - 两种删除空白行的方法
  • 1月7日星期二今日早报简报微语报早读
  • 随机置矩阵列为0[矩阵乘法pytorch版]
  • C# 中mysql数据库,已经在原有数据库升级数据库脚本,去管理可以一次,和多次执行的,nuget包
  • PCL 分段线性函数
  • 王静波页岩气:工厂蜕变的创业传奇
  • php反序列化 ctf例题演示 框架安全(TP,Yii,Laravel) phpggc生成框架利用pop
  • Koi技术教程-Tauri基础教程-第二节 Tauri的核心概念上
  • 入门网络安全工程师要学习哪些内容【2025年寒假最新学习计划】
  • vulnhub靶场【DC系列】之5
  • 前端面试题合集
  • 基于RK3568/RK3588大车360度环视影像主动安全行车辅助系统解决方案,支持ADAS/DMS
  • 基于 GEE Sentinel-1 数据集提取水体
  • Python判断、循环练习
  • 【简博士统计学习方法】第1章:4. 模型的评估与选择
  • 解密Navicat密码(Java)