Linux下shell编程基础知识(2)

通常shell预设的变量名为大写。可以使用echo查看变量;
常用变量有:PATH、HOME、LANG、PWD、LOGNAME、HOSTNAME
[root@linuxidc ~]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@linuxidc ~]# echo $HOME
/root
[root@linuxidc ~]# echo $PWD
/root
[root@linuxidc ~]# echo $LOGNAME
root
[root@linuxidc ~]# echo $HOSTNAME
linuxidc.com

env  可以查看系统预设的所有环境变量;

set    可以列出系统预设的全部变量,包括用户自己设定的变量;


自定义变量    变量名=变量内容   
自定义变量只在当前shell下生效;bash命令打开一个新的shell,变量就不会生效,退出新shell后,回到当前shell,变量继续生效;
 [root@linuxidc ~]# ABC=CentOS
[root@linuxidc ~]# echo $ABC
centos
[root@linuxidc ~]# bash
[root@linuxidc ~]# echo $ABC
[root@linuxidc ~]# exit
exit
[root@linuxidc ~]# echo $ABC
centos

变量永久生效的方法:
1)系统下所有用户登录都可以使用该变量
在/etc/profile 配置文件中最后一行,添加"export myname=linuxidc",然后执行source /etc/profile 生效;source命令的作用是,将目前设定的配置刷新,即不用注销再登录也能生效。
[root@linuxidc ~]# echo "export myname=linuxidc" >> /etc/profile
[root@linuxidc ~]# source /etc/profile
[root@linuxidc ~]# su - user1
[user1@linuxidc ~]$ echo $myname 
linuxidc

2)只在当前用户下使用变量
在用户的家目录下 .bashrc 配置文件,添加"export myname=linuxidc",然后执行source .bashrc 生效;
[user1@linuxidc ~]$ pwd/home/user1
[user1@linuxidc ~]$ echo "export myname=linuxidc" >> .bashrc
[user1@linuxidc ~]$ source .bashrc
[user1@linuxidc ~]$ echo $myname
linuxidc

自定义变量的规则
1、设定变量的格式“变量名=变量内容”等号两边不能有空格
2、变量名只能由英文、数字及下划线组成,而且不能以数字开头;
3、当变量内容带有特殊字符(空格 $),需要加单引号;
[root@linuxidc ~]# ABC='linux centos'
[root@linuxidc ~]# echo $ABC
linux centos

如变量内容中本身有单引号,需要加双引号;

[root@linuxidc ~]# ABC="Linux'"
[root@linuxidc ~]# echo $ABC
Linux'

4、如果变量内容需要引用其他运行结果,需要使用反引号

[root@linuxidc ~]# ABC=`pwd`
[root@linuxidc ~]# echo $ABC
/root

5、变量内容可以累加其他变量的内容,需要加双引号。

[root@linuxidc ~]# AA="Angle"
[root@linuxidc ~]# echo $AA
Angle
[root@linuxidc ~]# AB="$AA"BB
[root@linuxidc ~]# echo $AB
AngleBB

单引号和双引号的区别,用双引号时不会取消掉里面出现的特殊字符的本身作用(这里的$),而使用单引号则里面的特殊字符全部失去它本身的作用。

9、pstree    以树状图显示当前系统的进程
当前shell下运行bash命令后,会进入一个新的shell,新shell为之前shell的子shell;
[root@linuxidc ~]# pstree | grep bash
    |-login---bash
    |-sshd---sshd---bash-+-grep
[root@linuxidc ~]# bash
[root@linuxidc ~]# pstree | grep bash
    |-login---bash
    |-sshd---sshd---bash---bash-+-grep

在父shell中设定一个变量后,进入子shell后变量不会生效;需要在子shell中生效要用exprot指令;export 声明全局变量,让该shell的子shell也知道;如果export后面不加任何变量名,则它会声明所有的变量。
[root@linuxidc ~]# echo $AA
Angle
[root@linuxidc ~]# bash
[root@linuxidc ~]# echo $AA
[root@linuxidc ~]# exit
exit
[root@linuxidc ~]# export AA
[root@linuxidc ~]# bash
[root@linuxidc ~]# echo $AA
Angle

10、取消变量    unset 变量名
[root@linuxidc ~]# AB="Angle BB"
[root@linuxidc ~]# echo $AB
Angle BB
[root@linuxidc ~]# unset AB
[root@linuxidc ~]# echo $AB

系统环境变量与个人环境变量的配置文件
/etc/profile  系统预设的几个重要的变量,例如PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
/etc/bashrc    预设umask以及PS1等变量。PS1就是我们登录linux 命令行最前面显示的字符;
\u  用户users
\h  主机名hostname
\W  当前目录pwd
\$  系统用户为#,普通用户显示$


[root@linuxidc ~]# echo $PS1[\u@\h \W]\$
[root@localhost ~]# PS1='[\h@\u \W]\$'
[localhost@root ~]#

更改PS1的显示;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5595799b2467a04d371ab2413de8428a.html