开发必备基础知识【Linux环境变量文件合集】

开发必备基础知识【Linux环境变量文件合集】

在Linux系统中,环境配置文件用于定制用户的Shell环境,包括定义环境变量、设置命令别名、定义启动脚本等。不同的Shell(如bash、zsh)有着各自对应的配置文件。

.bashrc:每新开一个终端都会执行,配置只影响当前用户的设置

.bashrc:交互式非登录shell配置文件(新开终端窗口就会执行

  • 概念:.bashrc是一个针对Bash shell的配置文件,用于交互式非登录shell会话。这意味着每次你打开一个新的终端窗口或标签页时,.bashrc中的配置就会被加载。
  • 使用场景:
  1. 设置shell别名和函数
  2. 定义环境变量、仅对当前用户的shell会话中有效
  3. 修改命令提示符
  4. 设置shell查找路径:$PATH

示例:在.bashrc,我们通常会这样配置:

# 设置命令别名,在终端输入ll效果实际等于ls -la
alias ll='ls -la'
# $HOME/bin目录添加到搜索路径中
export PATH="$HOME/bin:$PATH"

.bash_profile:只在登录时执行的配置,针对bash shell

.bash_profile:登录shell的配置文件(只在登录时执行一次)

  • 概念:.bash_profile是在登录shell会话开始时加载的配置文件。当你通过图形界面登录、通过SSH远程连接到系统或通过终端登录时,这些文件中的设置就会生效。
  • 使用场景:
  1. 环境变量设置,这些变量在整个登录会话中都有效
  2. 读取其他的配置文件,如:.bashrc

示例:我们通常会在.bash_profile.profie文件中,加载.bashrc。确保我们即使在登录的shell中,.bashrc的配置也可以被应用。

if [ -f ~/.bashrc ]; thensource ~/.bashrc
fi

.profile:只在登录时执行的配置,兼容多种shell

与.bash_profile效果一样,不过.bash_profile只对bash(shell)有效,.profile兼容多种shell,只要配置了之后,用其他shell登录也能启作用。

.zshrc:zsh(shell)的配置文件,每新开一个终端都会执行

针对zsh终端类型

  • 如果你的默认终端是zsh,当你新开一个窗口时,.bashrc 文件通常不会被自动加载,因为zsh会去查找和执行它自己的配置文件,主要是 .zshrc。.bashrc 是专为bash设计的配置文件,不会在zsh环境下自动应用
# 查看终端类型
echo $SHELL

在这里插入图片描述

总结

  1. .bashrc 和 .zshrc 主要用于非登录Shell,每次启动新终端时都会加载。
  2. .bash_profile 和 .profile 用于登录Shell,仅在用户登录时执行一次。
  • 对于bash用户,.bash_profile 和 .bashrc 常常配合使用,.bash_profile 可以调用 .bashrc 来避免重复配置。
  • zshell用户则主要关注 .zshrc。

①交互式非登录 vs 登录shell:

  • .bashrc适用于每次新开终端时的交互式非登录shell
  • .bash_profile.profile适用于开始一个新的登录shell会话

②加载频率:

  • .bashrc:每次打开新终端窗口或标签时加载
  • .bash_profile.profile仅在登录时加载

③通用性:

  • .profile可以被多种兼容sh的shell读取,而.bash_profile特定于bash

如何选择:

  1. 对于Bash用户:在.bash_profile中设置环境变量,并确保它加载.bashrc
  2. 对于非Bash sh兼容shell用户:使用.profile来设置环境变量。
  3. 通用配置:可以将通用配置放在.profile中,特定于Bash的配置放在.bashrc中。

拓展:

1 ~/.zshrc 与 /etc/zsh/zshrc(当前用户有效与所有用户有效)

①~/.xxxx:实际是当前用户家目录下的配置,因此只对当前用户有效

  • ~/.zshrc:实际是当前用户家目录下的.zshrc配置
  • ~/.bashrc 或 ~/.zshrc(取决于使用的Shell):这些文件中的环境变量配置仅对当前用户在非登录Shell中有效。例如,如果你使用bash作为Shell,那么在~/.bashrc中设置的环境变量只会影响到当前用户。
  • ~/.profile 或 ~/.bash_profile:对于登录Shell,可以在这些文件中设置环境变量,它们也只对当前用户有效。通常,.bash_profile会调用.bashrc来合并配置。

②/etc/xxx:对所有用户都有效,修改的是这台服务器上的配置。类比windows上的用户环境变量与系统环境变量。

  • /etc/profile:这是一个系统级别的配置文件,对所有用户都有效,无论他们使用哪种Shell。在这个文件中设置的环境变量会在所有用户的登录Shell中生效。
  • /etc/bash.bashrc 或 /etc/zsh/zshrc:对于bash或zsh,系统级的rc文件可以用来设置对所有用户都有效的非登录Shell环境变量。例如,系统管理员可能会在这里设置全局的命令别名或提示符配置。

2 export tag1=value1:临时设置环境变量

有时候我们会执行export xxxx=xxx,

# 环境变量 TAG1 被设置为 VALUE1,该设置是临时的,仅对当前的终端会话有效
# 新开一个终端后无法访问到该环境变量
export tag1=value1

3 source /etc/profile

通常我们配置完环境变量后,会执行 source xxxx

  • source /etc/profile 命令的确用于重新加载 /etc/profile 配置文件。这个命令使得在当前Shell会话中立即生效 /etc/profile 中定义的环境变量和配置,而不需要打开新的终端或重新登录
  • 由于 /etc/profile 主要是为全局登录Shell准备的配置文件,对于非登录或交互式的Shell,直接执行这个命令可能不会影响到所有的环境配置。对于bash用户,日常的个性化配置通常放在 ~/.bashrc 或 ~/.bash_profile 中,对于这些用户级的配置文件,使用 source ~/.bashrc 或 source ~/.bash_profile 会更加常见
# 重新加载/etc/profile中的配置,而无需重新登录会话
source /etc/profile

参考文章:https://blog.csdn.net/weixin_39973810/article/details/137281970

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

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

相关文章

【HTML】-解决页面内容无法选择、复制问题

目录 1、网页内容无法选中 1.1、问题原因 1.2、解决脚本 1.2.1、开启控制台窗口 1.2.2、执行脚本命令 2、内容复制弹出阻止框 2.2、解决脚本 1、网页内容无法选中 1.1、问题原因 今天在访问某一网站平台,需要将内容进行选择、复制时发现不可使用。 在使用…

圆通寄15kg30kg一般多少钱?寄大件物品怎么寄最便宜?

作为一名即将毕业的大学生,搬家成了我和室友们共同的难题。尤其是在寄送大件物品时,如何省钱、如何打包、选择哪家快递公司等问题让我们头疼不已。今天,我就来分享一些寄大件物品的省钱技巧以及打包方法,希望对大家有所帮助。 一…

Ubuntu部署SpringBoot项目

文章目录 Ubuntu部署SpringBoot项目一、JDK1.1 下载1.2 解压JDK配置环境变量1.3 是否安装成功1.4 开机自启1.4.1 修改脚本1.4.2 设置开机自启 二、Redis2.1 下载2.2 解压Redis并安装2.3 开机自启2.3.1 修改脚本2.3.2 设置开机自启 三、Nginx3.1 安装Nginx依赖包3.1.1 prce-deve…

Python酷库之旅-第三方库Pandas(006)

目录 一、用法精讲 10、pandas.DataFrame.to_excel函数 10-1、语法 10-2、参数 10-3、功能 10-4、返回值 10-5、说明 10-6、用法 10-6-1、数据准备 10-6-2、代码示例 10-6-3、结果输出 11、pandas.ExcelFile类 11-1、语法 11-2、参数 11-3、功能 11-4、返回值 …

BUUCTF - Basic

文章目录 1. Linux Labs 【SSH连接漏洞】2. BUU LFI COURSE【文件包含漏洞】3. BUU BRUTE【暴力破解用户名密码】4. BUU SQL COURSE【SQL注入-当前数据库】5. Upload-Labs-Linux 1【文件上传漏洞】7. Buu Upload Course 1【文件上传包含漏洞】8. sqli-labs 1【SQL注入-服务器上…

MySQL常用高级特性

MySQL作为一种广泛使用的关系型数据库管理系统,除了基本的数据库功能外,还提供了许多高级特性来满足不同应用场景的需求。以下是一些MySQL的常用高级特性及其详细讲解: 1. 存储引擎 功能介绍 MySQL支持多种存储引擎,每种引擎在…

C++线程的使用

C11之前,C语言没有对并发编程提供语言级别的支持,这使得我们在编写可移植的并发程序时,存在诸多的不便。现在C11中增加了线程以及线程相关的类,很方便地支持了并发编程,使得编写的多线程程序的可移植性得到了很大的提高…

使用Java构建物联网应用的最佳实践

使用Java构建物联网应用的最佳实践 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 随着物联网(IoT)技术的快速发展,越来越…

【FFMPEG基础(一)】解码源码

学习分享 main函数decodetorgb32.h 文件decodetorgb32 .cpp文件 main函数 #include <QApplication> #include "decodetorgb32.h" int main(int argc, char *argv[]) {QApplication a(argc, argv);DecodeToRGB32 toRGB32;int restoRGB32.openVideo("../fi…

01 Web基础与HTTP协议

1.1 Web 基础 本章将介绍 Web 基础知识&#xff0c;包括域名的概念、DNS 原理、静态网页和动态网页的相关知识。 1.1.1.域名概述 1.域名的概念 ip地址不易记忆 2.早期使用host文件解析域名 主机名重复主机维护困难 3.DNS 分布式层次式 4.域名空间结构 根域顶级域 组…

InstantStyle-Plus:风格转移与内容保留在文本到图像的生成

在之前的文章中已经和大家介绍过小红书在风格保持方面的优秀工作InstantID和InstantStyle,感兴趣的小伙伴可以点击下面&#x1f447;链接阅读&#xff5e; 小红书InstantID来了, 一张照片几秒钟就能生成个性化图片, 无缝衔接Stable Diffusion&#xff09; InstantID作者新作&…

国外使用代理IP的安全风险

1. 数据泄露 当使用代理IP时&#xff0c;用户的真实IP地址被隐藏&#xff0c;但仍然存在数据泄露的风险。如果代理服务器没有进行恰当的安全措施&#xff0c;用户的个人信息和访问记录可能会被黑客窃取或监控。 2. 恶意软件 在使用代理IP时&#xff0c;用户可能会在代理服务器…

关于 Mac 系统 .DS_store 文件的起源

原文&#xff1a;Arno - 2006.10.01 &#xff08;前排提醒&#xff1a;可以在 .gitignore 中添加 .DS_Store&#xff0c;否则 git 仓库会存储这个和项目无关的文件。&#xff09; 如果你是 Mac 用户&#xff0c;曾经将文件从 Mac 传输到 Windows&#xff0c;那么可能对 .DS_S…

c++ word转换为pdf

在windows系统下&#xff0c;使用QAxObject效果是最好的 转60多兆的文件速度还是可以的&#xff0c;不建议使用多线程&#xff0c;因为多线程会多次调用转换函数&#xff0c;导致程序一直运行&#xff0c;只有全部转换完成后&#xff0c;程序才能继续向下运行&#xff0c;但是c…

SketchUp + Enscape+ HTC Focus3 VR

1. 硬件: 设备连接 2. 软件: 安装steam steamVR Vive Business streaming 3. 操作: 双方登录steam 账号,然后带上头盔,用手柄在HTC Focus3 安装 串流软件,选择串流软件,在Enscape中选择 VR 模式即可 4.最终效果: SketchUp Enscape HTC Focus 3 VR 实时预览_哔哩哔哩_bi…

云微客短视频矩阵全域营销,更高效的获客引流方式!

在抖音这样一个拥有海量用户和内容的短视频平台上&#xff0c;单一账号往往难以覆盖我们的客户群体&#xff0c;甚至于每天发布四五条视频&#xff0c;所引发的流量也是微乎其微的。在竞争如此激烈的市场环境中&#xff0c;商家企业无不想方设法追求更高效的获客引流方式&#…

SQL Server 查询死锁以及解决死锁的基本知识(图文)

目录 1. 基本知识2. 查看和解锁被锁的表3. 查看和处理数据库堵塞 1. 基本知识 在 SQL Server 中&#xff0c;死锁是指两个或多个进程互相等待对方持有的资源&#xff0c;从而无法继续执行的现象 要解决死锁问题&#xff0c;首先需要识别并分析死锁的发生原因&#xff0c;然后…

Floyd判圈算法——环形链表(C++)

Floyd判圈算法(Floyd Cycle Detection Algorithm)&#xff0c;又称龟兔赛跑算法(Tortoise and Hare Algorithm)&#xff0c;是一个可以在有限状态机、迭代函数或者链表上判断是否存在环&#xff0c;求出该环的起点与长度的算法。 …

什么是断路器模式?Hystrix在其中扮演什么角色?

断路器模式&#xff08;Circuit Breaker Pattern&#xff09; 断路器模式是一种设计模式&#xff0c;它用于在分布式系统中防止级联失败的发生。类比于电路中的断路器&#xff0c;该模式的核心思想是当系统检测到一些调用或响应出现问题&#xff08;如超时、异常等&#xff09…

科研绘图系列:R语言箱线图(boxplot)

介绍 使用 ggplot2 包画箱线图通常使用 geom_boxplot() 函数。箱线图(Boxplot)是一种用于展示一组数据分布特征的图形,它能够提供以下信息: 中位数:箱线图中的中位线表示数据的中位数。四分位数:箱线图的箱子部分表示数据的四分位数范围,即25%和75%分位数,这可以展示数…