非root用户在linux中配置zsh(已解决ncurses-devel报错)

Zsh(Z Shell)是一款功能强大的交互式 Unix shell,以其高度可定制性和丰富的功能著称,被视为 Bash 的增强替代品。它支持智能补全、主题美化、插件扩展(如 Oh My Zsh 框架)、自动纠错、全局别名等特性,显著提升命令行操作效率与用户体验,成为开发者与系统管理员的首选工具之一。本篇博客针对非root用户在linux中配置zsh进行介绍,看完你也可以在自己的用户下配制好zsh

文章目录

  • 一、安装zsh
  • 二、安装on my zsh
  • 三、配置on my zsh

一、安装zsh

  1. 在用户名下新建一个zsh的文件夹:
cd && mkdir zsh && cd zsh
  1. 下载最新版本的zsh,可以从这个链接看最新的zsh版本是什么download zsh,点击就会下载最新的zsh,看看后面的版本号是什么,我这里是5.9,下面就下载5.9的,如果是其他版本的话,记得一起改。
wget https://sourceforge.net/projects/zsh/files/latest/download/zsh-5.9.tar.xz
  1. 解压下载后文件
xz -d zsh-5.9.tar.xz
tar -xvf zsh-5.9.tar
cd zsh-xxx
  1. 编译文件
./configure --prefix=$HOME/zsh
make && make install

这时候报错:(如果没有报错,可以直接跳到安装on my zsh)

configure: error: “No terminal handling library was found on your system.
This is probably a library called ‘curses’ or ‘ncurses’. You may
need to install a package called ‘curses-devel’ or ‘ncurses-devel’ on your
system.”

解决方案:
先配置好环境变量:

export CXXFLAGS="-fPIC"
export CFLAGS="-fPIC"
export NCURSES_HOME=$HOME/ncurses  # 这里表示家目录的ncurses目录,可以自己设置一个想要的路径
export PATH=$NCURSES_HOME/bin:$PATH
export LD_LIBRARY_PATH=$NCURSES_HOME/lib:$LD_LIBRARY_PATH
export CPPFLAGS="-I$NCURSES_HOME/include" LDFLAGS="-L$NCURSES_HOME/lib"

配置好环境变量后,安装最新版本的ncurses,可以点击ncurses download查看最新版本,我这里是6.5,如果有更新的版本记得修改。

cd ../../ && mkdir ncurses && cd ncurses  # 切换到上级目录新建ncurses文件夹wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.5.tar.gz  # 下载最新版本ncurses
tar -xzvf ncurses-6.5.tar.gz  # 解压
cd ncurses-6.5
# XXX需要改成最新的版本号./configure --prefix=$HOME/ncurses --with-shared --without-debug --enable-widec  
# 指定路径configure,可以自己修改想要安装的路径,这里我装到了家目录的ncurses下面了
make && make install  # 安装

配制好环境安装好ncurses之后,再回到zsh路径进行编译

./configure --prefix=$HOME/zsh
make && make install

可以看到现在就能够正常编译了。

二、安装on my zsh

  1. 首先需要更新PATH:
export PATH=$HOME/zsh/bin:$PATH
# 这里需要修改成你安装的路径

修改.bash_profile来自动切换到zsh:

vim ~/.bash_profile

将一下命令加到~/.bash_profile:

[ -f $HOME/zsh/bin/zsh ] && exec $HOME/zsh/bin/zsh -l

然后exc,输入:wq保存退出。
2. 安装on my zsh

wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh

在这里插入图片描述

3.切换到zsh,现在就可以使用zsh了。

exec $HOME/zsh/bin/zsh

三、配置on my zsh

下载插件:

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh}/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh}/plugins/zsh-autosuggestions

打开默认设置:

vim ~/.zshrc

修改配置文件以下两处:

ZSH_THEME="ys"
plugins=(git zsh-syntax-highlighting zsh-autosuggestions)
  1. 重启.zshrc
source ~/.zshrc
  1. 修改conda的配置文件,自启动zsh:
vim   ~/.bashrc

在最下方添加:

exec $HOME/zsh/bin/zsh

然后更新~/.bashrc:

source ~/.bashrc

再新建终端时,zsh即可自己启动,至此,非root用户在linux中配置zsh完成!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/93175.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Foundations and Recent Trends in Multimodal Mobile Agents: A Survey》论文精读笔记

论文链接:https://arxiv.org/pdf/2411.02006 摘要 文章首先介绍了核心组件,并探讨了移动基准和交互环境中的关键代表性作品,旨在全面理解研究重点及其局限性。 接着,将这些进展分为两种主要方法: 基于提示的方法&a…

npm安装时一直卡住的解决方法

npm install 卡住通常是由于网络问题或缓存问题导致的。以下是几种解决方法: 方法1:清理npm缓存 npm cache clean --force npm install方法2:删除node_modules和package-lock.json重新安装 rm -rf node_modules package-lock.json npm instal…

[密码学实战]使用Java生成国密SM2加密证书等(四十三)

[密码学实战]使用Java生成国密SM2加密证书等(四十三) 本文将详细介绍如何通过Java代码生成符合国密标准的SM2加密证书,包括密钥对生成、证书扩展属性配置、PEM格式保存等关键步骤。 一. 运行结果示例 二. 国密算法与加密证书 国密算法(SM系列)是中国自主研发的密码算法体…

从零开始之stm32之CAN通信

从小白的视角了解并实现简单的STM32F103的CAN通信,直接上手。一、CAN协议简介CAN总线上传输的信息称为报文,当总线空闲时任何连接的单元都可以开始发送新的报文,有5种类型的帧:数据帧、遥控帧、错误帧、过载帧、帧间隔。数据帧有两…

Java 课程,每天解读一个简单Java之利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示, * 60分以下

package ytr250812;/*题目:利用条件运算符的嵌套来完成此题:学习成绩>90分的同学用A表示,60-89分之间的用B表示,* 60分以下*/import java.util.Scanner;public class GradeEvaluator {public static void main(String[] args) …

Word XML 批注范围克隆处理器

该类用于处理 Word 文档(XML 结构)中被批注标记的文本范围, 实现指定内容的深度克隆,并将其插入到目标节点之后。 适用于在生成或修改 .docx 文件时复制批注内容块。/*** Word XML 批注范围克隆处理器* * 该类用于处理 Word 文档&…

MQTT:Java集成MQTT

目录Git项目路径一、原生java架构1.1 导入POM文件1.2 编写测试用例二、SpringBoot集成MQTT2.1 导入POM文件2.2 在YML文件中增加配置2.3 新建Properties配置文件映射配置2.4 创建连接工厂2.5 增加入站规则配置2.6 增加出站规则配置2.7 创建消息发送网关2.8 测试消息发送2.9 项目…

day 16 stm32 IIC

1.IIC概述1基于对话的形式完成,不需要同时进行发送和接收所以删掉了一根数据线,变成半双工2为了安全起见添加了应答机制3可以接多个模块,且互不干扰4异步时序,要求严格,发送过程中不能暂停,所以需要同步时序…

AMD KFD的BO设计分析系列 0:开篇

开启我始终不敢碰的GPU存储系列,先上个图把核心关系表达下,以此纪念。注:图中kfdm_mm误写,应该为kfd_mm,不修改了,请大家不要介意。

EUDR的核心内容,EUDR认证的好处,EUDR意义

近年来,全球森林退化问题日益严峻,毁林行为不仅加剧气候变化,还威胁生物多样性和原住民权益。为应对这一挑战,欧盟于2023年6月正式实施《欧盟零毁林法案》(EU Deforestation-free Regulation, EUDR)&#x…

数据分析专栏记录之 -基础数学与统计知识

数据分析专栏记录之 -基础数学与统计知识: 1、描述性统计 均值 data_set [10, 20, 30, 40, 50] mean sum(data_set)/len(data_set)np 里面的函数,对二维进行操作时, 默认每一列 mean1 np.mean(data_set) print(mean, mean1)s 0 for i…

《星辰建造师:C++多重继承的奇幻史诗》

🌌🔥 《星辰建造师:多重继承与this指针的终极史诗》 🔥🌌—— 一场融合魔法、科技与哲学的C奇幻冒险🌠🌌 序章:代码宇宙的诞生 🌌🌠在无尽的代码维度中&#…

云计算-OpenStack 运维开发实战:从 Restful API 到 Python SDK 全场景实现镜像上传、用户创建、云主机部署全流程

一、python-Restful Api 简介 Restful API 是一种软件架构风格,基于 HTTP 协议设计,通过统一的接口(如 URL 路径)和标准的 HTTP 方法(GET/POST/PUT/DELETE 等)实现资源(如数据、文件等)的操作,具有无状态、可缓存、客户端 - 服务器分离等特点。方法如下 用 GET 请求获…

RxJava 在 Android 中的深入解析:使用、原理与最佳实践

前言RxJava 是一个基于观察者模式的响应式编程库,它通过可观察序列和函数式操作符的组合,简化了异步和事件驱动程序的开发。在 Android 开发中,RxJava 因其强大的异步处理能力和简洁的代码风格而广受欢迎。本文将深入探讨 RxJava 的使用、核心…

面试实战 问题三十 HTTP协议中TCP三次握手与四次挥手详解

HTTP协议中TCP三次握手与四次挥手详解 在HTTP协议中,连接建立和断开依赖于底层的TCP协议。虽然HTTP本身不定义握手过程,但所有HTTP通信都通过TCP三次握手建立连接,通过四次挥手断开连接。以下是详细解析:一、TCP三次握手&#xff…

读《精益数据分析》:双边市场的核心指标分析

双边市场数据分析指南:从指标体系到实战落地(基于《精益数据分析》框架)在互联网平台经济中,双边市场(如电商、出行、外卖、自由职业平台等)的核心矛盾始终是"供需平衡与效率优化"。这类平台连接…

Queue参考代码

queue.c #include "queue.h" #include "stdlib.h" // 初始化循环队列 void initializeCircularQueue(CircularQueue *cq, uint8_t *buffer, uint32_t size) {cq->front 0;cq->rear 0;cq->count 0;cq->size size;cq->data buffer; }…

通过时间计算地固系到惯性系旋转矩阵

通过时间计算地固系到惯性系旋转矩阵 1. 引言 在航天工程和卫星导航领域,经常需要在地固坐标系(ECEF)和惯性坐标系(ECI)之间进行转换。本文将详细介绍如何根据UTC时间计算这两个坐标系之间的旋转矩阵,并提供完整的C语言实现。 2. 基本概念 2.1 坐标系定义…

【Datawhale AI 夏令营】金融文档分析检索增强生成系统的架构演变与方法论进展

# **金融文档分析检索增强生成系统的架构演变与方法论进展****第一部分:基础原则和基线系统分析****第一部分:金融领域检索增强生成范式的解构****第二部分:基线剖析:流水线的二分法****同步轨迹 (SimpleRAG)****异步改进 (AsyncS…

C语言相关简单数据结构:顺序表

目录 1.顺序表的概念及结构 1.1 线性表 如何理解逻辑结构和物理结构? 1.2 顺序表分类 顺序表和数组的区别: 顺序表分类: 静态顺序表 动态顺序表 1.3 动态顺序表的实现 初始化 尾插 头插 尾删 头删 在指定位置之前插入数据 删…