关于Mac中的shell

ops/2025/1/11 12:33:57/

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.ppmy.cn/ops/149159.html

相关文章

zookeeper监听机制(Watcher机制)

文章目录 引言I zookeeper监听机制Watcher机制实现分布式的通知功能触发事件种类Watcher的三个过程II watch机制特点一次性触发事件封装event异步发送先注册再触发常见的通知状态和事件类型III 应用案例(Kafka)Kafka的消息模型Kafka在Zookeeper中保存的元数据Kafka 基于Contr…

使用R包Corrplot绘制相关性图

前记 Corrplot是一个用于可视化相关性矩阵的R包。它提供了各种方法和选项来创建高质量的相关性图,并帮助用户更好地理解数据集中的变量之间的相关性。 相关性是指两个或多个变量之间的统计关系,它衡量了这些变量之间的线性关系的强度和方向。在数据分析和…

HTML-表单标签

一、form表单容器标签 <form> 标签在 HTML 中用于定义一个表单容器&#xff0c;用于收集用户输入的数据。它是所有表单元素&#xff08;如文本框、单选按钮、复选框、下拉菜单等&#xff09;的父元素。以下是关于 <form> 标签的详细介绍&#xff0c;包括其特点、用…

算法6--模拟

目录 基础经典例题1576. [替换所有的问号](https://leetcode.cn/problems/replace-all-s-to-avoid-consecutive-repeating-characters/description/)495.[ 提莫攻击](https://leetcode.cn/problems/teemo-attacking/submissions/460223504/)[6. Z 字形变换](https://leetcode.c…

python无需验证码免登录12306抢票 --selenium(2)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 [TOC](python无需验证码免登录12306抢票 --selenium(2)) 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 就在刚刚我抢的票&#xff1a;2025年1月8日…

数据采集标注在智能导航系统中的应用案例

‌智能导航系统是一种基于GPS定位技术和人工智能算法的导航软件&#xff0c;其可根据用户的位置、路线和交通情况等信息&#xff0c;提供最佳的出行路线和导航服务‌。‌智能导航系统综合应用了信息管理、认知心理学与行为学、人工智能等多学科理论与技术&#xff0c;自主识别用…

深入Android架构(从线程到AIDL)_22 IPC的Proxy-Stub设计模式04

目录 5、 谁来写Proxy及Stub类呢? 如何考虑人的分工 IA接口知识取得的难题 在编程上&#xff0c;有什么技术可以实现这个方法&#xff1f; 范例 5、 谁来写Proxy及Stub类呢? -- 强龙提供AIDL工具&#xff0c;给地头蛇产出Proxy和Stub类 如何考虑人的分工 由框架开发者…

在Windows环境下搭建无人机模拟器

最近要开发无人机地面站&#xff0c;但是没有无人机&#xff0c;开发无人机对我来说也是大姑娘坐花轿——头一回。我们要用 MAVLink 和无人机之间通信&#xff0c;看了几天 MAVLink&#xff0c;还是不得劲儿&#xff0c;没有实物实在是不好弄&#xff0c;所以想先装一个无人机模…