关于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 上运行相同的命令和脚本,提供一致的跨平台体验。
相关文章:
关于Mac中的shell
1 MacOS中的shell 介绍: 在 macOS 系统中,Shell 是命令行与系统交互的工具,用于执行命令、运行脚本和管理系统。macOS 提供了多种 Shell,主要包括 bash 和 zsh。在 macOS Catalina(10.15)之前,…...
【npm依赖包介绍】借助rimraf依赖包,在用npm run build构建项目时,清空dist目录,避免新旧混合
文章目录 背景如何使用附上rimraf的介绍和说明主要作用使用场景安装使用示例异步删除同步删除 参考资料 背景 在npm run build时,一般都会清空项目中已有的dist目录再构建,避免新旧混合。 如何使用 可以简单使用rimraf这个npm依赖包。 目前rimraf的最…...
爬虫学习记录
1.概念 通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程 通用爬虫:抓取的是一整张页面数据聚焦爬虫:抓取的是页面中的特定局部内容增量式爬虫:监测网站中数据更新的情况,只会抓取网站中最新更新出来的数据 robots.txt协议: 君子协议,网站后面添加robotx.txt…...
Java Spring Boot实现基于URL + IP访问频率限制
点击下载《Java Spring Boot实现基于URL IP访问频率限制(源代码)》 1. 引言 在现代 Web 应用中,接口被恶意刷新或暴力请求是一种常见的攻击手段。为了保护系统资源,防止服务器过载或服务不可用,需要对接口的访问频率进行限制。本文将介绍如…...
C4D2025 win版本安装完无法打开,提示请将你的maxon App更新至最新版本,如何解决
最近安装C4D2025 win版本时,明明按步骤安装完成,结果打开提示提示请将你的maxon App更新至最新版本?遇到这种情况该如何解决呢。 一开始我的思路以为是旧版本没有删除干净,所以将电脑里有关maxon的软件插件都卸载了,重…...
微信小程序实现登录注册
文章目录 1. 官方文档教程2. 注册实现3. 登录实现4. 关于作者其它项目视频教程介绍 1. 官方文档教程 https://developers.weixin.qq.com/miniprogram/dev/framework/路由跳转的几种方式: https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.switchTab…...
SpringBoot环境和Maven配置
SpringBoot环境和Maven配置 1. 环境准备2. Maven2.1 什么是Maven2.2 为什么要学 Maven2.3 创建一个 Maven项目2.4 Maven核心功能2.4.1 项目构建2.4.2 依赖管理2.4.3 Maven Help插件 2.5 Maven 仓库2.5.1本地仓库2.5.2 中央仓库2.5.3 私有服务器, 也称为私服 2.6 Maven设置国内源…...
大语言模型训练所需的最低显存,联邦大语言模型训练的传输优化技术
联邦大语言模型训练的传输优化技术 目录 联邦大语言模型训练的传输优化技术大语言模型训练所需的最低显存大语言模型训练所需的最低显存 基于模型微调、压缩和分布式并行处理的方法,介绍了相关开源模型及技术应用 核心创新点 多维度优化策略:综合运用基于模型微调、模型压缩和…...
1.07 标准IO
1.思维导图 2.先编写以下结构体 struct Student { char name[20]; double math; double chinese; double english; double physical; double chemical; double…...
恒压恒流原边反馈控制芯片 CRE6289F
CRE6289F 系列产品是一款内置高压 MOS 功率开关管的高性能多模式原边控制的开关电源芯片。较少的外围元器件、较低的系统成本设计出高性能的交直流转换开关电源。CRE6289F 系列产品提供了极为全面和性能优异的智能化保护功能,包括逐周期过流保护、软启动、芯片过温保…...
Java中线程中断的几种方式,你了解吗?
Java中线程,可以使用 interrupt() 方法来实现线程的中断,那么,线程中中断的方式有几种呢?接下来,我们将介绍3种不同的线程中断方式,跟随我们的脚步,一起去看看! 目录 第一招…...
Tesseract5.4.0自定义LSTM训练
准备jTessBoxEditor,然后配置环境变量。 1、将图片转换成tif格式的,这里需要用画图工具另存为; 2、生成box文件 执行命令: tesseract agv.normal.exp1.tif agv.normal.exp1 -l eng --psm 6 batch.nochop makebox 关于box文件…...
centOS7
特殊权限 set_uid 赋予所有者身份 chmod us 文件 set_gid 赋予所有组身份 chmod gs 文件/目录 sticky_bit 防火墙 firewall-cmd 开启端口 firewall-cmd --zonepublic --add-port8080/tcp --permanent 重启防火墙 systemctl restart firewalld 查看开启的所有端口 fi…...
HTML5 弹跳动画(Bounce Animation)详解
HTML5 弹跳动画(Bounce Animation)详解 弹跳动画是一种动态效果,使元素在出现或消失时看起来像是在跳动。这种效果可以通过 CSS 动画或 JavaScript 来实现,增强用户体验。 1. 使用 CSS 实现弹跳动画 可以使用 CSS 的 keyframes…...
4.1.3 串
文章目录 串的基本概念串的基本操作串的存储结构 串的基本概念 串,仅由字符构成的有限序列。 串长:串中的字符个数。空串:长度为0的串。空格串:一个或多个空格构成的串。子串:串中任意长度连续字符构成的序列。含有字…...
国产编辑器EverEdit - 两种删除空白行的方法
1 使用技巧:删除空白行 1.1 应用场景 用户在编辑文档时,可能会遇到很多空白行需要删除的情况,比如从网页上拷贝文字,可能就会存在大量的空白行要删除。 1.2 使用方法 1.2.1 方法1: 使用编辑主菜单 选择主菜单编辑 …...
1月7日星期二今日早报简报微语报早读
1月7日星期二,农历腊月初八,早报#微语早读。 1、公安部:已为一线民警配备执法记录仪130万余部,规范现场执法; 2、浙江提出2035年全省域基本实现共同富裕; 3、“汕头牛肉丸”有新标准!1月6日起…...
随机置矩阵列为0[矩阵乘法pytorch版]
文章目录 1. 举例:2. python 代码 1. 举例: A [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 ] , r a n d [ 0 , 5 , 2 ] → A [ 0 1 0 3 4 0 6 7 0 9…...
C# 中mysql数据库,已经在原有数据库升级数据库脚本,去管理可以一次,和多次执行的,nuget包
在C#中,如果你需要管理数据库升级脚本,并且希望这些脚本能够支持一次执行和多次执行(即幂等性),你可以使用一些现成的NuGet包来简化这个过程。以下是一些常用的NuGet包: 1. DbUp 描述: DbUp 是一个轻量级…...
PCL 分段线性函数
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 假设我们有一个分段线性函数,并且我们希望在某个区间内对这个函数进行均匀采样,生成一系列的点。相对通用一些的思路就是对这个函数进行参数化,方法有很多,这在其他的博客中也有提到,不过PCL也为我们提供了一种…...
Python实战:从零构建天气查询Agent的完整指南
1. 为什么你需要一个天气查询Agent 每次出门前都要手动打开天气App查温度?或者总忘记带伞被突然的暴雨淋成落汤鸡?这些烦恼其实可以用几行Python代码解决。我最近刚用Python给自己写了个天气查询Agent,现在每天早上刷牙时喊一声"查今天天…...
手机维修师傅的“内功心法”:看懂手机屏排线上的MIPI、I2C、SPI信号,快速定位不开机、花屏、触摸失灵故障
手机维修实战:通过屏排线信号诊断显示与触摸故障的黄金法则 当你面对一部摔落后屏幕全黑但能听见系统声音的iPhone,或是进水后出现彩色条纹的安卓手机时,90%的维修师傅会直接更换屏幕总成。而真正的高手,会拿起万用表和示波器&…...
Tiny Transformer实战:手把手教你实现轻量级Transformer架构
1. 为什么需要轻量级Transformer? 当你第一次听说Transformer时,可能会被它的强大性能所震撼。但当你真正尝试在本地运行一个标准Transformer模型时,往往会发现它需要消耗惊人的计算资源。我曾在自己的笔记本电脑上尝试训练一个中等规模的Tr…...
MinIO初始化报错`Invalid endPoint`全解析:从URL规范到调试技巧
1. 为什么你的MinIO客户端总是报Invalid endPoint错误? 最近在帮团队排查MinIO集成问题时,发现超过60%的初始化错误都源于endPoint配置不当。很多开发者习惯性复制浏览器地址栏的URL直接粘贴到代码里,结果运行时却收到冰冷的Invalid endPoint…...
【RK3588】开发板调试串口切换实战:从UART2到UART3的完整指南
1. 为什么需要切换调试串口? 很多开发者第一次接触RK3588开发板时,可能会好奇为什么默认的调试串口是UART2。这其实和开发板的设计有关——正点原子等厂商在设计开发板时,通常会选择最稳定的串口作为默认调试接口。但实际项目中,…...
Spring IOC 源码学习 事务相关的 BeanDefinition 解析过程 (XML)反
从0构建WAV文件:读懂计算机文件的本质 虽然接触计算机有一段时间了,但是我的视野一直局限于一个较小的范围之内,往往只能看到于算法竞赛相关的内容,计算机各种文件在我看来十分复杂,认为构建他们并能达到目的是一件困难…...
实时计算框架
实时计算框架:数据洪流中的秒级响应引擎 在数字化转型浪潮中,企业对数据时效性的需求达到前所未有的高度。从金融风控到电商推荐,从物联网监测到交通调度,传统批处理模式已无法满足毫秒级决策的需求。实时计算框架应运而生&#…...
HY-Motion 1.0避坑指南:写好Prompt指令,轻松生成高质量3D动画
HY-Motion 1.0避坑指南:写好Prompt指令,轻松生成高质量3D动画 你是不是也遇到过这种情况:兴冲冲地打开HY-Motion 1.0,输入一段文字,结果生成的3D动画要么动作僵硬,要么干脆跑偏,完全不是你想要…...
不用装软件!这款MicroPython浏览器 IDE :让你在手机上也能调试树莓派 Pico晌
1、普通的insert into 如果(主键/唯一建)存在,则会报错 新需求:就算冲突也不报错,用其他处理逻辑 回到顶部 2、基本语法(INSERT INTO ... ON CONFLICT (...) DO (UPDATE SET ...)/(NOTHING)) 语…...
如何5分钟搞定抖音批量下载:douyin-downloader完整使用指南
如何5分钟搞定抖音批量下载:douyin-downloader完整使用指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback …...
