开发必备基础知识【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

相关推荐
watermelonoops几秒前
Deepin和Windows传文件(Xftp,WinSCP)
linux·ssh·deepin·winscp·xftp
woshilys32 分钟前
sql server 查询对象的修改时间
运维·数据库·sqlserver
疯狂飙车的蜗牛1 小时前
从零玩转CanMV-K230(4)-小核Linux驱动开发参考
linux·运维·驱动开发
恩爸编程2 小时前
探索 Nginx:Web 世界的幕后英雄
运维·nginx·nginx反向代理·nginx是什么·nginx静态资源服务器·nginx服务器·nginx解决哪些问题
Michaelwubo3 小时前
Docker dockerfile镜像编码 centos7
运维·docker·容器
远游客07133 小时前
centos stream 8下载安装遇到的坑
linux·服务器·centos
马甲是掉不了一点的<.<3 小时前
本地电脑使用命令行上传文件至远程服务器
linux·scp·cmd·远程文件上传
jingyu飞鸟3 小时前
centos-stream9系统安装docker
linux·docker·centos
好像是个likun4 小时前
使用docker拉取镜像很慢或者总是超时的问题
运维·docker·容器
超爱吃士力架4 小时前
邀请逻辑
java·linux·后端