1.3 玩转变量和环境变量

《Linux Shell 脚本攻略(第 2 版)》读书笔记

  • 变量在使用之前不需要声明类型,只需直接赋值;
  • 每一个变量的值都是字符串;
  • 有一些特殊的变量会被 shell 环境和操作系统环境用来存储一些特别的值,这类变量就被称为环境变量

1. 预备知识

env: 可查看所有与终端相关的环境变量;

查看某个进程的环境变量可以使用如下命令来查看:

$ pgrep gedit   #使用此命令查看'gedit'应用的进程ID
12501
$ cat /proc/12501/environ   #查看进程 12501 的环境变量
GDM_KEYBOARD_LAYOUT=usGNOME_KEYRING_PID=1560USER=slynuxHOME=/home/slynux

每一个变量以name=value形式来描述,彼此之间由 null 字符(\0)分隔。

可以用 tr 命令来将 \0 替换为 \n,使输出更直观:

$ cat /proc/12501/environ | tr '\0' '\n'

2. 变量的赋值与使用

变量可以通过以下方式进行赋值操作:

var=value #var是变量名;value是值,如果value包括任何空白字符,那么必须使用单引号或者双引号

注意:var = value 不同于 var=value。把 var=value 写成 var = value 是一个常见的错误,但前者是赋值操作,后者则是相等操作。

使用变量

在变量名之前加上 $ 前缀就可以:

var="value" #给变量var赋值
#使用时,如下两种方式都可以
echo $var
echo ${var}
echo "Hello ${var}" #注意,单引号不行

环境变量

环境变量是未在当前进程中定义,而从父进程中继承而来的变量。

例如,环境变量 HTTP_PROXY ,它定义了互联网联建应该使用哪个代理服务器。

HTTP_PROXY=192.168.1.23:3128
export HTTP_PROXY #export命令用来设置环境变量

如何设置 PATH 环境变量

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

3. 补充内容

1. 获取字符串长度

length=${#var}

2. 识别当前所使用的shell

echo $SHELL
echo $0

3. 检查是否超级用户

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

4. 修改Bash提示符字符串(username@hostname:~$)

默认的 shell 提示文本是在文件 ~/.bashrc 中的某一行设置的。

  • 可以使用如下命令列出设置变量 PS1 的那一行:

    $ cat ~/.bashrc | grep PS1 
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
    
  • 如果要设置一个定制的提示字符串,可以输入:

  • slynux@localhost: ~$ PS1="PROMPT>" 
    PROMPT> Type commands here #提示字符串已经改变
    

    一些特殊的字符可以扩展成系统参数:

    \u: 用户名
    \h: 主机名
    \w: 当前工作目录

你可能感兴趣的:(1.3 玩转变量和环境变量)