shell中环境变量

环境变量

查看环境变量命令

命令 功能
env和printenv 不会对变量进行排序,也不会输出局部变量和用户定义变量
set 会显示出全局变量、局部变量以及用户定义变量。它还会按照字母顺序对结果进行排序

设置全局环境变量

在设置全局环境变量的进程所创建的子进程中,该变量都是可见的。创建全局环境变量的方法是先创建一个局部环境变量,然后再把它导出到全局环境中。

这个过程通过export命令来完成,变量名前不需要加$。
修改子shell中全局环境变量并不会影响到父shell中该变量的值。
子shell甚至无法使用export命令改变父shell中的全局环境变量的值。

$ my_variable="I am man"
$ export my_variable
$
$ echo $my_variable
I am man
$
$ bash
$
$ echo $my_variable
I am man
$
$my_variable="Null"
$
$export my_variable
$
$echo $my_variable
Null
$
$exit
exit
$
$ echo $my_variable
I am man
$

删除环境变量

用unset命令删除,不用使用$,如果在子进程里删除变量并不会对父进程有影响。

$ echo $my_variable
I am man
$
$ unset my_variable
$
$ echo $my_variable

$

窍门: 如果要用到变量,使用$;如果要操作变量,不使用$。这条规则的一个例外就是使用printenv显示某个变量的值。

定位系统环境变量

登录shell
登录shell会从5个不同的启动文件里读取命令:

  • /etc/profile
  • $HOME/.bash_profile
  • $HOME/.bashrc
  • $HOME/.bash_login
  • $HOME/.profile
  1. /etc/profile
    /etc/profile文件是bash shell默认的主启动文件。
  2. $HOME目录下的启动文件
    shell会按照下列顺序,运行第一个被找到的文件,余下的则被忽略。
  • $HOME/.bash_profile
    ** $HOME/.bash_login
  • $HOME/.profile
    没有$HOME/.bashrc文件,是因为该文件通常通过其他文件运行的。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,473评论 9 467
  • 说明,本文所使用的机器是:SUSE Linux Enterprise。 问题定位 这看起来像是环境变量引起的问题,...
    lework阅读 2,960评论 6 11
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,203评论 2 33
  • 当你脱下平底帆布鞋 当咯噔声踩碎了风 当所有的畏惧都在脚下 我想你看见了不一样的风景 青春的碎片斑驳成影 再没有被...
    美人长河阅读 297评论 0 0
  • 刚刚按住一张废纸,那边又飞来一只破塑料袋儿。他们急忙捡起废纸,又挥舞着扫帚前去捕捉塑料袋儿。他们桔红色的工作服像剧...
    湖边人老刘阅读 320评论 0 0