shell之变量与环境变量

变量

赋值与打印

#!/bin/bash 
#文件名:variables.sh 
fruit=apple 
count=5 
echo "We have $count ${fruit}(s)" #因为shell使用空白字符来分隔单词,所以我们需要加上一对花括号来告诉shell这里的变量名
是fruit,而不是fruit(s)

执行

We have 5 apple(s) 

获取变量长度

通过 ${#var}

$  var=12345678901234567890 
$ echo ${#var} 
20

环境变量

如何查看环境变量

(1)查看所有的环境变量

$ printenv
$ env

(2)查看某一进程的环境变量

$ pgrep mysql  
1501
12496
$ cat /proc/1501/environ   #其中,PID是相关进程的进程ID

特殊文件/proc/PID/environ是一个包含环境变量以及对应变量值的列表。每一个变量以name=value的形式来描述,彼此之间由null字符(\0)分隔。形式上确实不太易读.
要想生成一份易读的报表,可以将cat命令的输出通过管道传给tr,将其中的\0替换成\n

$ sudo cat /proc/12496/environ | tr '\0' '\n'

(3) 查看环境变量

ocean@ubuntu:~/workspaces/shell$ echo $PWD
/home/ocean/workspaces/shell
ocean@ubuntu:~/workspaces/shell$ echo $HOME
/home/ocean
$ echo $USER
ocean

(4) 识别当前所用的shell

$ echo $SHELL  #可以通过环境变量SHELL获知当前使用的是哪种shell
/bin/bash
$ echo $0
bash

(5)特别的PATH变量:

  • PATH变量列出了一系列可以共shell搜索特定应用程序的目录,各目录路径之间以:分隔。$PATH通常定义在/etc/environment、/etc/profile或~/.bashrc中
$ echo $PATH
/home/ocean/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/go/bin:/home/ocean/workspaces/go/bin

如果想要在SHELL中添加一条新路径

$ export PATH="$PATH:/home/user/bin" 

(6) 检查是否为超级用户
环境变量UID中保存的是用户ID,root用户的UID是0

#!/bin/bash 
if [ $UID -ne 0 ]; then 
 echo Non root user. Please run as root. 
else 
 echo Root user 
fi 

参考:<Linux_Shell脚本攻略>

猜你喜欢

转载自blog.csdn.net/zhizhengguan/article/details/88304667