環境變量
環境變量:每個Shell打開都可以獲得到的變量。
我們知道通過export
的方式打開可以讓子進程讀取父進程的變量的值,那怎麼樣才能讓每一個進程都能讀取到變量的值呢?
在這呢,系統有一些默認的配置文件,把變量嵌入到配置文件就可以了。
那麼,系統已經自帶了哪些環境變量呢?我們可以通過env
這個命令,查看系統中內置的環節變量。
[root@lincoding ~]# env
HOSTNAME=lincoding
SHELL=/bin/bash
……
SSH_TTY=/dev/pts/0
USER=root
……
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
LANG=en_US.UTF-8
SHLVL=1
HOME=/root
LOGNAME=root
……
由於環節變量太多了,省略一部分。以上都是系統的環境變量,新的終端打開,以上的變量都會被初始化完成。
可以通過變量的引用查看單獨某個的環境變量的值,環境變量的都是大寫爲主。
[root@lincoding ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@lincoding ~]# echo $SHELL
/bin/bash
PATH
系統環境變量是定義了命令的搜索路徑,SHELL
是定義了系統默認的Shell是bash。
PATH環境變量
PATH
系統環境變量是定義了命令的搜索路徑,意思就是我們輸入的Linux命令,都會在PATH
變量定義的路徑裏尋找,若存在則執行命令,若不存在則報錯命令不存在。
其實所謂的不存在,就是在搜索路徑裏沒有找到對應的命令。
[root@lincoding ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
假設要增加自定義的搜索路徑,則可以通過下面的方式
[root@lincoding ~]# PATH=$PATH:/home
[root@lincoding ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/home
不過上面的方式,新增的自定義路徑是PATH變量,只在當前終端作用範圍生效,其他進程是不生效的。
預定義變量
預定義變量有$、$0三個
- $?表示的是上一條命令執行的狀態碼,0代表正常,非0代表出錯
[root@lincoding home]# cd /home/
[root@lincoding home]# echo $?
0
[root@lincoding home]# cd /file
-bash: cd: /file: No such file or directory
[root@lincoding home]# echo $?
1
- $$查看當前進程的pid
[root@lincoding home]# echo $$
18136
- $0表示當前進程的名稱
[root@lincoding home]# echo $0
-bash
Shell腳本里使用上述三個預定義變量,腳本如下:
#!/bin/bash
# PID
echo $$
echo $0
執行效果:
[root@lincoding home]# ./test.sh
702
./test.sh
[root@lincoding home]# . test.sh
18136
-bash
[root@lincoding home]# source test.sh
18136
-bash
根據不同的執行方式,那麼$0產生的名稱也不同。
位置參數
位置參數用於讀取執行Shell腳本時傳入的參數的值,形式如下:
- $1 參數一
- $2 參數二
- $3 參數三
以此類推,當參數10以上的時候,需要注意一下, 需要用{11}方式。
舉個例子,如下Shell腳本:
#!/bin/bash
# $1 $2 $3 ... $9 ${10}
echo $1
echo $2
echo $3
執行結果:
[root@lincoding home]# ./test.sh a b c
a
b
c
這裏介紹一下獲取傳入Shell腳本參數的總個數可以用$#
,如下例子:
#!/bin/bash
echo $#
執行結果:
[root@lincoding home]# ./test.sh
0
[root@lincoding home]# ./test.sh a
1
[root@lincoding home]# ./test.sh a b
2
[root@lincoding home]# ./test.sh a 123 b
3
小結
本節主要介紹了環境變量的特殊性,PATH
環境變量定義的就是命令的搜索路徑,若想知道其他環境變量,可以使用env
命令查看。
預定義變量是系統已經預定義好的變量,分別是$、$0。並且還可以通過位置變量$1
$2
$3
… 來獲取Shell的傳入參數的值。