Akemi

高效使用Linux-父与子shell环境

2025/02/26

查看shell信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
查看当前系统支持的shell
cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/zsh

查看当前使用的shell
echo $SHELL
/bin/zsh

每次手动运行bash zsh sh等
都会创建一个新的对应的shell
也就是它的子shell环境

子shell会继承父shell的环境变量,且改变环境变量不会影响父环境

如果是普通变量则互相不影响

普通变量与环境变量

普通变量指的是仅当前 Shell 可见的变量,比如

a="123"

这类变量不会被printenv输出

环境变量可以对子 Shell 和子进程可见

通过export将普通变量转换为环境变量

1
2
3
4
5
6
7
8
9
10
11
12
13
MY_VARIABLE=10
export MY_VARIABLE

export MY_VARIABLE=10

printenv| grep VARIABLE
MY_VARIABLE=10

但是这种导入也是**暂时**的将其放入了当前shell的环境变量中
重启当前shell之后依然会失效

将其永久化,需要将其放入$HOME/.bashrc中
如果是zsh就是$HOME/.zshrc

环境的标准配置文件

  • 启动文件/etc/profile

在登录shell时自动运行
位置包括$HOME/.bash_profile,$HOME/.bash_login,$HOME/.profile

  • 初始化文件/etc/bash.bash.rc

交互式shell启动时运行
位置包括$HOME/.bashrc

  • 清理文件/etc/bash.bash_logout

登录shell

退出时运行
位置包括$HOME/.bash_logout

在启动文件中往往指定了执行初始化文件

1
2
3
4
5
6
7
8
9
10
11
12
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

强制读取配置文件

修改启动文件或初始化文件后

想要进行强制的环境变量刷新,就可以使用source命令

1
2
echo "MY_VARIABLES=10" >> ~/.bashrc
source ~/.bashrc

同理,如果要添加PATH

在原本PATH的基础上追加要添加的PATH:

1
2
echo 'export PATH="$PATH:/usr/local/java"' >> ~/.bashrc
source ~/.bashrc # 立即生效
CATALOG