您的位置:首页 > 运维架构 > Shell

4. linux shell、环境变量及与帐户的关系

2015-04-11 21:25 246 查看

1. shell的环境变量

1.1 shell环境变量的分类

shell环境变量按生存周期可分为两类:

1. 永久型 2.临时型永久型需要修改配置文件,临时型用export.

shell环境变量按作用范围可分为两类:

1. 全局型 2. 本地型 (所有用户与特定用户)全局型配置文件在/etc/profile 和 /etc/bash.bashrc本地型配置文件在主目录下的.bashrc 和 .profile。注1: 不同文件的关系要看下文件说明部分。注2:环境变量立即生效使用source命令。

shell变量按读写权限可以分为两类

只读变量与可读写变量。调用过readonly xxx命令的变量为只读变量

1.2 环境变量的查看

env 查看全部环境变量(包括全局变量)set 查看本地环境变量

1.3 环境变量的设置

例1:AAA=aaa例2:set AAA=aaa例3:export AAA=aaa 可向子shell传递变量值,注意是值传递。区别: 例1:
tony@ubuntu:~$ AAA=aaa            --------------》<span style="color:#cc33cc;">1 设置方式</span>
tony@ubuntu:~$ set | grep AAA
<span style="color:#cc0000;">AAA=aaa</span>
tony@ubuntu:~$ su tony
Password:
tony@ubuntu:~$ set | grep AAA
tony@ubuntu:~$ exit               --------------》<span style="color:#cc0000;">2.变量不能向子shell传递</span>
exit
tony@ubuntu:~$
<pre name="code" class="plain">tony@ubuntu:~$ <span style="font-family: Arial, Helvetica, sans-serif;">su -m tony</span>
Password:tony@ubuntu:~$ set | grep AAA --------------------》3.使用-m选项也不能传递tony@ubuntu:~$
<strong>   例2:</strong>
tony@ubuntu:~$ set AAA=aaa       ----------------》<span style="font-family: Arial, Helvetica, sans-serif;"><span style="color:#cc33cc;">1 设置方式</span></span>
tony@ubuntu:~$ set | grep AAA
<span style="color:#cc0000;">_=AAA=aaa</span>
tony@ubuntu:~$ su tony
Password: 
tony@ubuntu:~$ set | grep AAA
tony@ubuntu:~$ exit               <span style="font-family: Arial, Helvetica, sans-serif;">----------------------》<span style="color:#ff0000;">2.变量不能向子shell传递</span></span>
exit
tony@ubuntu:~$ 
tony@ubuntu:~$ su -m tony
Password: 
tony@ubuntu:~$ set | grep AAA     ---------------》<span style="color:#cc0000;">3.使用-m选项也不能传递</span>
tony@ubuntu:~$ 
<strong>  例3:</strong>
tony@ubuntu:~$ export AAA=aaa   <span style="font-family: Arial, Helvetica, sans-serif;">------------------------》</span><span style="font-family: Arial, Helvetica, sans-serif;"><span style="color:#cc33cc;">1 设置方式</span></span>
tony@ubuntu:~$ set | grep AAA
<span style="color:#cc0000;">AAA=aaa
_=AAA</span>
tony@ubuntu:~$ su tony
Password: 
tony@ubuntu:~$ set | grep AAA
AAA=aaa                          <span style="font-family: Arial, Helvetica, sans-serif;">----------------------》</span><span style="font-family: Arial, Helvetica, sans-serif; color: rgb(255, 0, 0);">2.变量可以向子shell传递</span>
tony@ubuntu:~$ exit
exit
tony@ubuntu:~$

1.4环境变量的删除

unset

2. 关于su及sudo:

1. 当新安装一个ubuntu,会创建一个账户,这个账户不是root帐户。此时如果想用root 权限 可以使用sudo ,这是临时使用超级用户权限,提示输入的密码也不是超级用户密码,而是当前用户密码。2. 当新安装一个ubuntu,会有一个root账户,此时root帐户是有密码的,但是是系统生成的密码,用户不可知。当想转为root用户时(su),会提示输入密码,但这时当前用户并不知道root帐户的密码是多少。此时需要为root帐户设置一个密码,使用sudo -i, 这是会提示设置密 码,设置完成后,再想转为root帐户时就可使用此密码。命令:su : 用来切换帐户通用命令格式: su [option] [login_usr_name], 当login_usr_name省略,则默认为超级用户。1. 可临时使用其它帐户执行shell命令。 su -c common login_usr_name 如:su -c ls tony。2. 切换当前帐户。 su -l login_usr_name 如:su -l tony, su -/-l 为切换为超级用户。3. 更改shell。 su -s /bin/sh tony, su -s /bin/sh 默认切换为超级用户。4. 切换帐户,shell环境变量不变。 su -m . 具体哪些环境变量不变需要分辨一下。

3. 切换账户与shell的关系:

1. 在shell下切换帐户会打开一起新子shell。2. export 命令用来使用当前shell下的变量对子shell可见,与帐户的切换无关。如在当前shell下exort a=b, 在子shell中可以使用变量a,在孙shell中同样可以使用变量a, 而与子shell与孙shell的用户帐户无关。3. 在一个shell下执行shell脚本,所执行的shell脚本也是当前shell的子shell.4. 帐户切换中,如改变了shell的类型,shell的父子关系不变,export依然有效。

总结:

export 只与shell的父子关系有关,有用户账户及shell类型无关。export 的另一个效果是将shell中定义的局部变量加入到shell环境变量中。经试验环境变量的传递是值传递,在子shell中修改变量的值,并不会影响子shell同名的变量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: