Linux环境变量

全局变量

查看全局变量,可以使用env或printenv命令

➜  ~ printenv
TERM_SESSION_ID=w0t0p0:2D8ACFEB-DE56-4295-B5A1-4A816EAA8E2F
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.X9fDLzbfUY/Listeners
Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.YkaNEGB7E4/Render
COLORFGBG=15;0
ITERM_PROFILE=Default
XPC_FLAGS=0x0
LANG=zh_CN.UTF-8
PWD=/Users/apple
SHELL=/bin/zsh
SECURITYSESSIONID=186a8

查看个别环境变量的值,可以使用printenv命令

➜  ~ printenv HOME
/Users/apple

另外全局变量还可以作为命令行参数,如ls $HOME

局部变量

在Linux系统中并没有一个只显示局部环境变量的命令。set命令会显示为某个特定进程设置的所有环境变量,包括局部变量、全局变量以及用户自定义变量。

➜  ~ set
'!'=0
'#'=0
'$'=401
'*'=(  )
-=569JNRXZghiklms
0=-zsh
'?'=0
@=(  )
ANDROID_HOME='/Users/*****/Library/Android/sdk'
ARGC=0
Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.YkaNEGB7E4/Render
BG
CDPATH=''
COLORFGBG='15;0'
COLORTERM=truecolor
COLUMNS=101
COMMAND_MODE=unix2003
CPUTYPE=x86_64
EGID=20
EUID=501

set命令输出的内容明显比env的输出要多,另外输出的内容按照字母顺序排列。

设置用户定义变量

  • 设置局部用户自定义变量
    用户定义的局部变量使用小写字母,这样不会和系统环境变量冲突
➜  ~ echo $my_variable

➜  ~ my_variable=HELLO
➜  ~ echo $my_variable
HELLO
  • 设置全局环境变量
$my_variable="I  am Global now"
$export  my_variable
$echo  $my_variable
I  am Global now

通过export命令来完成,变量名前面不需要加$
在子shell中改变全局变量的值,这种改变只在子shell中有效,即使使用export命令也不会被反映到父shell中。

删除环境变量

使用unset命令删除已经存在的环境变量

➜  ~ echo $my_variable
HELLO
➜  ~ unset my_variable
➜  ~ echo $my_variable

:如果要用到变量,使用"$";如果要操作变量,不使用"$"
在子shell中对全局变量所做的增删改,都不能反映到父shell中。

设置PATH环境变量

将应用程序的命令目录加入到PATH环境变量之后

PATH=$PATH:/home/christine/Scripts

:如果希望子shell也能找到程序的位置,一定要把修改后的PATH环境变量导出

定位系统环境变量

启动bash shell有3种方式:

  • 登录时作为默认登录shell
  • 作为非登录shell的交互式shell
  • 作为运行脚本的非交互shell

1.登录shell
当登录Linux系统时,bash shell会作为登录shell启动。登录shell会从5个不同的启动文件里读取命令:
1)/etc/profile
2)$HOME/.bash_profile
3)$HOME/.bashrc
4)$HOME/.bash_login
5)$HOME/.profile
/etc/profile文件是系统上默认的bash shell的主启动文件。系统上的每个用户登录时都会执行这个启动文件。
不同的发行版执行/etc/profile时各不相同。但都会去执行/etc/profile.d中的所有文件,这是一个放置特定应用程序启动文件的地方。
剩下的启动文件都起着同一个作用:提供一个用户专属的启动文件来定义该用户所用到的环境变量。
shell会按照下列顺序,运行第一个被找到的文件,余下的则被忽略:

\$HOME/.bash_profile
\$HOME/.bash_login
\$HOME/.profile``

$HOME/.bashrc文件是在其他文件中运行的。

2.交互式shell进程
如果bash是作为交互式shell启动的,它就不会访问/etc/profile文件,只会检查用户HOME目录下的.bashrc文件。
.bashrc文件有两个作用:一是查看/etc目录下通用的bashrc文件,二是为用户提供一个定制自己的命令别名和私有函数的地方。

3.非交互式shell
系统执行shell脚本时用的是这种shell.
子shell可以继承父shell导出过的变量。

环境变量持久化

对于全局环境变量来说,最好是在/etc/profile.d目录中创建一个以.sh结尾的文件。把所有新的或修改过的全局环境变量设置放在这个文件中
在大多数发行版中,存储个人用户永久性bash shell变量的地方是$HOME/.bashrc文件。这一点适用于所有类型的shell进程。
对于alias命令,可放在$HOME/.bashrc启动文件中,使其效果永久化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值