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环境变量的删除
unset2. 关于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同名的变量。相关文章推荐
- 简析环境变量和变量延迟特殊字符以及中介法的微妙关系
- LINUX shell以及C程序中查看, 修改, 删除环境变量
- Windows 7环境变量与路径的一一对应关系
- Linux shell和配置文件及环境变量
- uboot环境变量与内核MTD分区关系
- 浅谈BuildForge中的环境变量的继承关系
- linux shell 将java写入环境变量
- Linux Shell脚本系列教程(三):变量和环境变量
- linux shell编程指南第十四章------环境和shell变量
- 关于linux Shell crontab 执行当前环境变量
- 5开发软件配置 --JDK环境变量的设置与export指令的关系
- uboot环境变量与内核MTD分区关系
- Linux Shell中判断某个环境变量是否存在以及获取某个环境变量的值
- Linux Shell脚本在service模式下的环境变量
- uboot环境变量与内核MTD分区关系
- linux shell及脚本编写,环境变量及重定向
- 简析环境变量和变量延迟特殊字符以及中介法的微妙关系
- uboot环境变量与uImage中MTD分区关系
- Windows 7环境变量与路径的一一对应关系
- Linux Shell环境变量