Back

Linux变量

每一种编程语言中,我们都会碰到变量的作用域的问题。Linux 是一个多用户的操作系统。多用户意味着每个用户登录系统后,都有自己专用的运行环境。而这个环境是由一组变量所定义, 这组变量被称为环境变量。用户可以对自己的环境变量进行修改以达到对环境的要求。

本地vs环境

本地变量只对当前shell生效,用“变量名=变量值”设定
环境变量对子进程也生效,用export设定 

用户vs系统

系统级变量对所有用户生效
用户级变量只对当前用户生效

暂时vs永久

如果要设定永久的变量,需要写入相应文件
否则就是暂时的,下次登录不生效

对所有用户生效的永久性变量

vi /etc/profile

这类变量对系统内的所有用户都生效,所有用户都可以使用这类变量。作用范围是整个系统,只在 root 下才能修改。

修改后使用source命令进行生效

source /etc/profile

对单一用户生效的永久性变量

在用户目录下的.bash_profile 文件中添加变量,该文件是隐藏文件

若bash是以login方式执行时,读取~/.bash_profile,若它不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。

当bash是以non-login形式执行时,读取~/.bashrc

临时有效的环境变量

此类环境变量只对当前的 shell 有效。当我们退出登录或者关闭终端再重新打开时,这个环境变量就会消失。

export 变量名=变量值 #设置新的环境变量
变量名=变量值 #设置或更新本地变量
echo $变量名 #打印
unset 变量名 #删除
readonly 变量名 #设置只读
env #显示当前用户的变量;
set #显示当前 shell 变量(shell 变量包含用户变量)

生效顺序

bash会在用户登录时,读取下列四个环境配置文件:

全局环境变量设置文件:/etc/profile、/etc/bashrc。 用户环境变量设置文件:~/.bash_profile、~/.bashrc。

读取顺序:① /etc/profile、② ~/.bash_profile、③ ~/.bashrc、④ /etc/bashrc。

① /etc/profile:此文件为系统的每个用户设置环境信息,系统中每个用户登录时都要执行这个脚本,如果系统管理员希望某个设置对所有用户都生效,可以写在这个脚本里,该文件也会从/etc/profile.d目录中的配置文件中搜集shell的设置。
② ~/.bash_profile:每个用户都可使用该文件设置专用于自己的shell信息,当用户登录时,该文件仅执行一次。默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
③ ~/.bashrc:该文件包含专用于自己的shell信息,当登录时以及每次打开新shell时,该文件被读取。
④ /etc/bashrc:为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。

常见的环境变量

BASH Bash Shell的全路径 CDPATH 用于快速进入某个目录。 PATH 决定了shell将到哪些目录中寻找命令或程序 HOME 当前用户主目录 HISTSIZE 历史记录数 LOGNAME 当前用户的登录名 HOSTNAME 指主机的名称 SHELL 当前用户Shell类型 LANGUGE 语言相关的环境变量,多语言可以修改此环境变量 MAIL 当前用户的邮件存放目录 PS1 基本提示符,对于root用户是#,对于普通用户是$

su和sudo

su - user #切换用户user且切换环境变量
su user #切换用户user,不切换环境变量
sudo user #使用user权限运行单个命令

su命令会启动一个新shell,环境变量和加不加“-”有关,执行时需要输入新用户的密码

sudo是以新用户的权限运行某个命令,这个能运行的范围由root用户规定,输入的是现在用户的密码

Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy
© Licensed Under CC BY-NC-SA 4.0