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

Linux修改默认shell为zsh

一、修改模型shell为zsh

1、检查当前使用的shell

echo $SHELL

2、检查当前系统支持的shell

cat /etc/shells# 输出结果显示如下:
"""
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/csh
/bin/tcsh
/usr/bin/csh
/usr/bin/tcsh
/usr/bin/zsh
/bin/zsh
/usr/bin/tmux
/bin/tmux
"""

3、 如果系统没有zsh,则需要安装

对于 RHEL / CentOS / Rocky Linux:

sudo yum install zsh -y

对于 Ubuntu / Debian:

sudo apt install zsh -y

安装完成后可以用下面的命令确认 zsh 安装成功:

which zsh        # 输出: /usr/bin/zsh,表明安装成功

4、将当前用户的默认 shell 改为 zsh

# 以下两个指令选择一个执行即可
chsh -s $(which zsh)        # 自动定位zsh的路径chsh -s /usr/bin/zsh        # 手动指定zsh的路径

 5、然后退出终端或重新登录,再用以下命令确认

echo $SHELL

输出如果是以下内容,则就说明默认 shell 已经切换成功:

/usr/bin/zsh

 二、安装 Oh My Zsh 提升颜值与体验

Oh My Zsh 是一个超好用的 Zsh 配置框架,让终端更智能、自动补全超强、还有主题美化 ✨

1、安装Oh My Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

上述指令会做几件事:

  • 安装 oh-my-zsh 到 ~/.oh-my-zsh

  • 自动生成一个 .zshrc

  • 自动把你的 shell 切换成 zsh(如未切换也可手动执行 chsh -s $(which zsh)

显示一下画面,说明安装成功:

2、 辅助插件的安装

(1)zsh-autosuggestions(命令自动建议):实时提供历史命令的建议,就像你在用 fish shell 或输入法那样的“灰色提示”。

举个例子:加入之前输入过这个指令 ssh node01,那么当你输入 ssh no 的时候,终端会提示灰色,只需要按 →(右箭头)或者 Ctrl+E 就可以自动补全,非常实用的辅助插件!

(2)zsh-syntax-highlighting(语法高亮):为你在终端中输入的命令加上实时语法颜色高亮,防止输错命令。其中合法命令是绿色,错误命令是红色,路径、参数、变量会以不同的颜色区分。

举个例子:conda lisy lisy 会变红色,表示它不存在;而conda是有效命令,会是绿色。

(3)zsh-completions(补全增强):支持在按 Tab 补全时支持更多工具,效率更高,比如:

  • git, docker, conda, kubectl, slurm, brew 等命令的选项和子命令补全

  • 支持更复杂的参数结构提示(比自带的 zsh 更强)

# 自动建议(fish 风格)
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions# 语法高亮
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting# 自动补全增强
git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-completions
3、 推荐一个 .zshrc 配置文件

(1)备份原始 .zshrc

cp ~/.zshrc ~/.zshrc.backup

(2)替换 .zshrc 文件内容

vim ~/.zshrc

编辑zshrc配置文件,替换为下面的内容:

# >>> 基础设置 <<<
export ZSH="$HOME/.oh-my-zsh"    # $HOME 是一个 环境变量,表示你当前登录用户的主目录,也就是你在终端打开默认进入的目录。
ZSH_THEME="robbyrussell"         # 主题推荐robbyrussell(是 oh-my-zsh 的默认主题,风格比较“朴素”),或者agnoster,酷炫实用,也可以根据自己的喜好选择不同的主题
DISABLE_UPDATE_PROMPT=true   # 不提示升级 oh-my-zsh
ENABLE_CORRECTION=true       # 自动纠正命令拼写错误
COMPLETION_WAITING_DOTS="true"# >>> 插件配置 <<<
plugins=(gitzsh-autosuggestionszsh-syntax-highlightingzsh-completionscolored-man-pagessudoextractconda
)source $ZSH/oh-my-zsh.sh# >>> Conda 自动激活(如果你安装了 Miniconda/Anaconda) <<<
if [[ -f "$HOME/miniconda3/etc/profile.d/conda.sh" ]]; thensource "$HOME/miniconda3/etc/profile.d/conda.sh"conda activate base
elif [[ -f "$HOME/anaconda3/etc/profile.d/conda.sh" ]]; thensource "$HOME/anaconda3/etc/profile.d/conda.sh"conda activate base
fi# >>> 自动补全建议颜色(zsh-autosuggestions) <<<
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8'# >>> 历史记录配置 <<<
HISTFILE=~/.zsh_history   # 定义命令历史记录的保存文件。Zsh 会把你敲过的命令写入这个文件
HISTSIZE=10000            # 当前 shell session(内存中)能保留的历史命令条数,如果你敲了3w条命令,只能用 ↑ 往回翻 1 万条
SAVEHIST=10000            # 每次退出 shell 时,最多保存多少条命令到 ~/.zsh_history 文件中
setopt append_history     # 多个终端 session 会“追加写入历史”而不是互相覆盖
setopt share_history      # 多个 zsh 实例之间“实时共享”历史命令# >>> 语法高亮支持(zsh-syntax-highlighting) <<<
# 插件通常已在 plugins 中声明,但如果不生效可手动 source
[[ -f ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]] && \source ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh# >>> autosuggestions 插件手动加载(保险) <<<
[[ -f ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh ]] && \source ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh# >>> 命令提示符美化(可选) <<<
export PROMPT_DIRTRIM=2           # 控制路径在提示符中的显示长度(路径缩短)
setopt prompt_subst               # 允许 prompt 中使用变量嵌套
autoload -Uz colors && colors     # 启用颜色支持,便于彩色 prompt / 文本输出# >>> 语言环境设置(防乱码)<<<
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

(3)重新配置文件

source ~/.zshrc

 再次执行以下命令查看当前的shell

echo $SHELL    # 输出位 /usr/bin/zsh,则表示shell切换成功

 (4)一些测试

git status          # 会高亮显示状态
conda env list      # 会看到 conda 自动激活
ls                  # 自动补全建议 + 高亮 + 美化 prompt
4、(可选)Powerlevel10k主题替换 

powerlevel10k 是一个超强、超美、超快的 Zsh 主题。

 安装 Powerlevel10k的步骤如下:

(1)克隆主题:

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k

(2)修改 .zshrc 中的主题为:

ZSH_THEME="powerlevel10k/powerlevel10k"

(3)重启终端,会自动进入配置向导:

你可以选择:

  • 单行 or 多行提示符

  • 彩色 or 黑白风格

  • 是否显示时间/git/状态码...

(向导是交互式的,选择你喜欢的风格即可)

如何配置Powerlevel10k主题可以参考以下链接:【Mac 从 0 到 1 保姆级配置教程 05】 - 全网最详细 20+ 张图逐帧安装 powerlevel10k zsh 主题-CSDN博客

相关文章:

Linux修改默认shell为zsh

一、修改模型shell为zsh 1、检查当前使用的shell echo $SHELL 2、检查当前系统支持的shell cat /etc/shells# 输出结果显示如下&#xff1a; """ /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /bin/csh /bin/tcsh /usr/bin/csh /usr/bin/tcsh /usr/bin/zsh…...

k8s scheduler几种扩展方式的关系及区别

网上关于scheduler扩展介绍的文章很多&#xff0c;但都是东说一句西说一嘴&#xff0c;完全没有逻辑性&#xff0c;对于逻辑建构者看着很痛苦&#xff0c;这篇文章不会深入教你怎么扩展&#xff0c;而是教你几种扩展方式的关系和逻辑结构&#xff1a; 目前Kubernetes支持五种方…...

react 封装无缝滚动组件

记录&#xff0c;以防忘记 SeamlessScroll.tsx import React, { useEffect, useRef, useState } from react;interface SeamlessScrollProps {children: React.ReactNode;speed?: number; // 滚动速度&#xff0c;单位&#xff1a;像素/秒minItems?: number; // 最小项目数…...

[ComfyUI] 如何升级自定义节点(Custom Nodes)

ComfyUI 提供了灵活的 自定义节点(Custom Nodes) 功能,允许用户扩展其能力。随着插件的更新,保持 Custom Nodes 处于最新状态是确保兼容性和功能完整性的关键。 1. 手动升级(Git Pull 方式) 如果你的 自定义节点 是通过 Git 克隆的,可以使用 Git 命令来升级: 步骤: …...

软件项目管理课程之第4讲:软件需求管理

讲授内容 项目案例 软件需求管理的基本概念 软件需求开发 软件需求管理 项目案例 案例背景&#xff1a;小王作为软件项目负责人&#xff0c;带领团队开展需求调查工作&#xff0c;但在需求分析和后续开发过程中出现了一系列问题。 问题表现&#xff1a; 项目规模庞大&…...

深入理解 dispatchEvent:前端事件触发的艺术

dispatchEvent 是 DOM 元素的一个方法&#xff0c;用于手动触发/派发一个事件。这个方法允许开发者以编程方式触发事件&#xff0c;而不是等待用户交互或浏览器自动触发。 1.基本概念 ★ 基础 作用&#xff1a;dispatchEvent 用于在指定的 DOM 节点上触发一个事件 使用场景&a…...

linux和windows是采用何种机制保存密码的?

传统Linux的不足&#xff1a; 1&#xff09;存在特权用户root 任何人只要得到root的权限&#xff0c;对于整个系统都可以为所欲为。这一点Windows也一样。 &#xff12;)对于文件的访问权划分不够细 在linux系统里&#xff0c;对于文件的操作&#xff0c;只有「所有者」…...

matlab打开两个工程

1、问题描述 写代码时&#xff0c;需要实时参考别人的代码&#xff0c;需要同时打开2个模型&#xff0c;当模型在同一个工程内时&#xff0c;这是可以直接打开的&#xff0c;如图所示 2、解决方案 再打开一个MATLAB主窗口 这个时候就可以同时打开多个模型了 3、正确的打开方…...

Unity中的MaterialPropertyBlock的作用和 Material 的区别

MaterialPropertyBlock 是 Unity 提供的一个用于动态修改材质属性的轻量级工具&#xff0c;核心作用是避免材质实例化&#xff08;Material Instantiation&#xff09;&#xff0c;从而优化性能。以下是它的关键特性和使用方法&#xff1a; 1. 核心作用 避免材质实例化 直接修改…...

Python与文件——保存文件

1.以下关于Python二维数据的描述中,错误的是()。 A、CSV文件的每一行是一维数据,可以用列表、元组表示。 B、从CSV文件获得数据内容后,可以用replace()来去掉每行最后的换行符。 C、若一个列表变量里的元素都是字符串类型,则可以用join()合成字符串。 D、列表中保存的二维数据,…...

HarmonyOS主题管理工具封装:动态切换、持久化存储与常见问题解析

注&#xff1a;适用版本&#xff08;Harmony OS NEXT / 5.0 / API 12 &#xff09; 一、效果展示 二、技术栈 HarmonyOS ArkUI框架 使用AppStorage实现跨组件状态管理&#xff0c;PersistentStorage持久化存储用户偏好。 系统配置常量 ConfigurationConstant.Color…...

60V单通道高精度线性恒流LED驱动器防60V反接SOD123封装

产品描述: PC561A 系列产品是用于产生单通道、高精度恒流源&#xff08; Constant Current Regulator&#xff0c; CCR&#xff09; 的LED 驱动芯片&#xff0c;为各类 LED 照明应用提供高性价比恒流方案。PC561A 采用晶体管自偏置技术&#xff0c;可在超宽工作电压范围内维持…...

学习threejs,使用Sprite精灵、SpriteMaterial精灵材质

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.Sprite1.1.1 ☘️代码…...

网络相关的知识总结1

1.设备可以通过以太网电缆&#xff08;如双绞线&#xff09;连接到交换机的端口&#xff0c;交换机也通过以太网电缆连接到路由器。但是如果距离过远&#xff0c;比如跨国路由器如何连接&#xff1f; 1.专用通信线路&#xff08;如 MPLS、光纤专线&#xff09;&#xff1a;租用…...

Cent OS7+Docker+Dify

由于我之前安装了Dify v1.0.0&#xff0c;出现了一些问题&#xff1a;无法删除&#xff0c;包括&#xff1a;知识库中的文件、应用、智能体、工作流&#xff0c;都无法删除。现在把服务器初始化&#xff0c;一步步重新安装&#xff0c;从0到有。 目录 1、服务器重装系统和配置…...

本地AI大模型部署革命:Ollama部署和API调试教程

Ollama&#xff1a;你的私人AI助手 还在为云端AI服务的高昂费用和隐私问题而烦恼吗&#xff1f;Ollama横空出世&#xff0c;它是一款专为本地环境打造的大模型部署神器&#xff0c;让你轻松在自己的设备上运行各种强大的AI模型。无论你是开发者还是普通用户&#xff0c;Ollama…...

centos7 linux VMware虚拟机新添加的网卡,能看到网卡名称,但是看不到网卡的配置文件

问题现象&#xff1a;VMware虚拟机新添加的网卡&#xff0c;能看到网卡&#xff0c;但是看不到网卡的配置文件 解决方案&#xff1a; nmcli connection show nmcli connection add con-name ens36 ifname ens36 type ethernet #创建一个网卡连接配置文件&#xff0c;这里con…...

SRT协议

SRT&#xff08;Secure Reliable Transport&#xff09;是一种开源的视频传输协议&#xff0c;专为高丢包、高延迟网络环境设计&#xff0c;结合了UDP的低延迟和TCP的可靠性&#xff0c;广泛应用于直播、远程制作、视频会议等场景。 定位&#xff1a;SRT协议的官方C/C实现库&am…...

K8S学习之基础五十一:k8s部署jenkins

k8s部署jenkins 创建nfs共享目录&#xff0c; mkdir -p /data/v2 echo /data/v2 *(rw,no_root_squash) > /etc/exports exportfs -arv创建pv、pvc vi pv.yaml apiVersion: v1 kind: PersistentVolume metadata:name: jenkins-k8s-pv spec:capacity:storage: 1GiaccessMod…...

在 Mermaid 流程图里“驯服”quot;的魔法指南!!!

&#x1f409; 在 Mermaid 流程图里“驯服”"的魔法指南 在使用 Mermaid 画流程图时&#xff0c;是不是经常遇到想秀一波 &quot; 却被它“反杀”的情况&#xff1f;&#x1f3af; 今天就来教大家如何在这头代码野兽的嘴里&#xff0c;抢回我们的双引号实体编码&#…...

GitHub美化个人主页3D图表显示配置操作

这个功能主要是用的这个开源仓库&#xff1a;https://github.com/yoshi389111/github-profile-3d-contrib 想看效果的话&#xff0c;我的个人主页&#xff1a;https://github.com/Sjj1024 开始操作 1.创建自己的github主页属性项目——跟你github用户名一致即可&#xff0c;…...

欧几里得距离(Euclidean Distance)公式

欧几里得距离公式 欧几里得距离&#xff08;Euclidean Distance&#xff09;是计算两点之间直线距离的一种方法。它是最常见的距离度量方式之一&#xff0c;广泛应用于数学、物理、机器学习、计算机视觉等领域。 公式定义 1. 二维空间 在二维平面上&#xff0c;假设有两个点…...

HarmonyOS NEXT 鸿蒙中关系型数据库@ohos.data.relationalStore API 9+

核心API ohos.data.relationalStore API 9 数据库 数据库是存储和管理数据的系统 数据库&#xff08;Database&#xff09;是一个以特定方式组织、存储和管理数据的集合&#xff0c;通常用于支持各种应用程序和系统的运行。它不仅是存放数据的仓库&#xff0c;还通过一定的…...

【JavaScript】JavaScript Promises实践指南

【JavaScript】JavaScript Promises实践指南 你了解JavaScript中的Promises吗&#xff1f;这是一个很多人一开始就放弃的主题&#xff0c;但我会尽量让它变得尽可能简单。 1. “Promise”到底是什么&#xff1f; “Promise”是异步编程中的一个基本概念&#xff0c;特别是在J…...

【软件工程】习题及答案

目录 第一章 习题第一章 习题答案第二章 习题第二章 习题答案第三章 习题第三章 习题答案第四章 习题第四章 习题答案第五章 习题第五章 习题答案第六章 习题第六章 习题答案第七章 习题第七章 习题答案 第一章 习题 一、选择题 1&#xff0e;关于引起软件危机的原因&#xff…...

git push的时候出现无法访问的解决

fatal: 无法访问 https://github.com/...&#xff1a;gnutls_handshake() failed: Error in the pull function. push的时候没有输入自己的github账号密码&#xff0c;为了解决每次push都要登录github这个问题&#xff0c;采用ssh密钥的方式认证&#xff0c;可以免去每次都输入…...

《深度剖析Android 12 SystemUI锁屏通知布局亮屏流程:从源码到实现》

优化后文章结构&#xff1a; 1. 前言 强调锁屏通知布局的重要性及分析目的&#xff0c;引出后续源码分析的必要性。 2. 核心类解析 KeyguardViewMediator&#xff1a;锁屏核心逻辑控制&#xff0c;处理亮屏/息屏事件分发。 PhoneWindowManager&#xff1a;系统输入事件&…...

为什么大模型在 OCR 任务上表现不佳?

编者按&#xff1a; 你是否曾经用最先进的大语言模型处理企业文档&#xff0c;却发现它把财务报表中的“$1,234.56”读成了“123456”&#xff1f;或者在处理医疗记录时&#xff0c;将“0.5mg”误读为“5mg”&#xff1f;对于依赖数据准确性的运营和采购团队来说&#xff0c;这…...

HCIP(VLAN综合实验)

实验拓补图 实验分析 一、实验目的 掌握VLAN的创建和配置方法理解VLAN在局域网中的作用学习如何通过VLAN实现网络隔离和通信 二、实验环境 交换机&#xff08;SW1、SW2、SW3&#xff09;个人电脑&#xff08;PC1、PC2、PC3、PC4、PC5、PC6&#xff09;路由器&#xff08;R1…...

每日算法-250328

记录今天学习和解决的LeetCode算法题。 92. 反转链表 II 题目 思路 本题要求反转链表中从 left 到 right 位置的节点。我们可以采用 头插法 的思路来反转指定区间的链表。 具体来说&#xff0c;我们首先定位到 left 位置节点的前一个节点 prev。然后&#xff0c;从 left 位置…...