shell基础(完结)-shell环境和环境变量设置

一、shell环境

不同的执⾏⽅式,不同的shell环境

在这里插入图片描述
1.每次调⽤bash都会开启⼀个⼦shell,因此不保留当前的shell变量,通过 pstree 命令检查进程树。
2.调⽤source是在当前shell环境加载脚本,因此保留变量。

学习了这么久的shell基础,下面我们来做一道shell的面试题,测试一下

shell变量⾯试题

问,如下输⼊什么内容
$ cat test.sh
user1=‘whoami’
$ sh test.sh
$ echo $user1
A.当前⽤户
B.whoami
C.空

答案很明显是C,你对了就说明上面的你会了,其实也没有那么复杂。
如果你可以自己去试一下,看看这个:
在这里插入图片描述
在这里插入图片描述

二、环境变量设置

环境变量⼀般指的是⽤export内置命令导出的变量,⽤于定义shell的运⾏环境、保证shell命令的正确执⾏。

shell通过环境变量确定登录的⽤户名、PATH路径、⽂件系统等各种应⽤。
环境变量可以在命令⾏中临时创建,但是⽤户退出shell终端,变量即丢失,如要永久⽣效,需要修改环境变量配置⽂件

  • ⽤户个⼈配置⽂件 ~/.bash_profile 、 ~/.bashrc 远程登录⽤户特有⽂件
  • 全局配置⽂件 /etc/profile 、 /etc/bashrc ,且系统建议最好创建在 /etc/profile.d/ ,⽽⾮直接修改主⽂件,修改全局配置⽂件,影响所有登录系统的⽤户

例如在root用户下,vim /etc/profile文件在这里插入图片描述
之后退出再登录,就会输出name
在这里插入图片描述

检查系统环境变量的命令

  • set,输出所有变量,包括全局变量、局部变量
  • env,只显示全局变量
  • declare,输出所有的变量,如同set
  • export,显示和设置环境变量值

撤销环境变量

  • unset 变量名,删除变量或函数。

设置只读变量

  • readonly ,只有shell结束,只读变量失效

系统保留环境变量关键字

bash内嵌了诸多环境变量,⽤于定义bash的⼯作环境

# export |awk -F '[ :=]' '{print $3}'

bash多命令执⾏

# ls /data/;cd /tmp/;cd /home;cd /data

环境变量初始化与加载顺序

/etc/profile.d/*.sh >/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) 
-> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout

系统级
1./etc/environment:
是系统在登陆时读取的第一个文件,设置整个系统的环境变量,只要启动系统就会读取该文件,用于为所有进程设置环境变量。系统使用此文件并不执行此文件中的命令,而是根据Key=Value 模式的代码,如果要在此文件中定义PATH环境变量,需要执行:PATH=$PATH:/xxx/bin

2./etc/profile:
此文件是系统登陆执行的第二个文件,为系统的每个用户设置环境信息。当用户第一次登陆时,该文件执行,并从/etc/profile.d目录中的配置文件搜索shell的设置(可以用于设定针对全系统所有用户的环境变量,环境变量周期是永久的)

3./etc/bashrc:
这个文件是针对所有用户的bash初始化文件,在此设定中的环境信息将应用与所有用户的shell中,此文件会在用户每次打开shell时执行一次。(即每次新开一个终端,都会执行/etc/bashrc)**

用户级
1.~/.profile:
对应当前登录用户的profile文件,用于定制当前用户的个人工作环境(变量是永久性),每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。(推荐放置个人设置的地方)

2.~/.bashrc:
该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。
(~/.bashrc只针对当前用户,变量的生命周期是永久的)。不推荐放到这儿,因为每开一个shell,这个文件会读取一次,效率肯定有影响。

3.~/.bash_profile or ./bash_login:/.bash_profile
是交互式login 方式进入 bash 运行的,~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
(如果~/目录下没有.bash_profile则新建立一个)这里是推荐放置个人设置的地方。当一个shell关闭时,在bash_profile中定义的系统变量则会失效。因此,每打开一个新的shell时都要运行一次source bash_profile.而且针对当前用户。

4.~/.bash_logout:
当每次退出系统(退出bash shell)时,执行该文件。另外,/etc/profile中设定的变量(全局)的可以作用于任何用户
~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是”父子”关系
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值