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

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

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

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

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

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

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

bash 复制代码
# 设置命令别名,在终端输入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的配置也可以被应用。

bash 复制代码
if [ -f ~/.bashrc ]; then
    source ~/.bashrc
fi

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

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

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

针对zsh终端类型

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

bash 复制代码
# 环境变量 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 会更加常见
bash 复制代码
# 重新加载/etc/profile中的配置,而无需重新登录会话
source /etc/profile

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

相关推荐
风静如云14 分钟前
OpenBMC:BmcWeb定义service
linux
sszdzq28 分钟前
Docker
运维·docker·容器
book012131 分钟前
MySql数据库运维学习笔记
运维·数据库·mysql
leoufung35 分钟前
VIM FZF 安裝和使用
linux·编辑器·vim
bugtraq20211 小时前
XiaoMi Mi5(gemini) 刷入Ubuntu Touch 16.04——安卓手机刷入Linux
linux·运维·ubuntu
xmweisi2 小时前
【华为】报文统计的技术NetStream
运维·服务器·网络·华为认证
VVVVWeiYee2 小时前
BGP配置华为——路径优选验证
运维·网络·华为·信息与通信
陆鳐LuLu2 小时前
日志管理利器:基于 ELK 的日志收集、存储与可视化实战
运维·elk·jenkins
CodeWithMe2 小时前
[ Vim ] 常用命令 and 配置
linux·编辑器·vim
DC_BLOG2 小时前
Linux-GlusterFS进阶分布式卷
linux·运维·服务器·分布式