linux 特殊shell變數

來源:互聯網
上載者:User

標籤:scope   cas   agent   位置變數   mask   取值   好的   運算   注意   

特殊變數

環境變數:

  系統本身運行需要由linux系統提前建立好的一類變數

  主要用於使用者的工作環境,包括(使用者的宿主目錄,命令的尋找路徑,使用者的目前的目錄,登入的終端等)環境變數的值由作業系統本身維護,隨著使用者的狀態改變而改變

使用env調取當前系統的環境變數

[[email protected] ~]# envXDG_VTNR=1XDG_SESSION_ID=1SSH_AGENT_PID=1925HOSTNAME=zq                                主機名稱IMSETTINGS_INTEGRATE_DESKTOP=yesGPG_AGENT_INFO=/run/user/1000/keyring/gpg:0:1VTE_VERSION=3803XDG_MENU_PREFIX=gnome-SHELL=/bin/bashTERM=xterm-256colorHISTSIZE=1000WINDOWID=37748743IMSETTINGS_MODULE=IBusUSER=zq                                   目前使用者

環境變數的設定檔在/etc/profile(全域)

使用者宿主目錄/home/zq/.bash profile(局部)

 

$PATH

定義命令預設的搜尋路徑

[[email protected] ~]# echo $PATH/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/zq/.local/bin:/home/zq/bin

注意: 只有自己執行的命令在PATH變數包括的目錄下,才可以直接使用並用tab補齊,如果不在PATH所包括的路徑下,           只能通過絕對路徑或相對路徑使用

[[email protected] ~]# echo $user[[email protected] ~]# echo $USER  查看目前使用者zq[[email protected] ~]# echo $SHELL  當前指令碼/bin/bash[[email protected] ~]# echo $HOME   /root
當前語言 $LANG

eg: 將我們所寫的指令碼放到$PATH的預設搜尋路徑中去

[[email protected] ~]# first.sh       不能直接運行這個指令碼bash: first.sh: 未找到命令...[[email protected] ~]# echo $PATH       因為PATH中沒有這個命令/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/zq/.local/bin:/home/zq/bin[[email protected] ~]# PATH="$PATH:/root"   將這個路徑加到PATH中去[[email protected] ~]# echo $PATH           PATH中顯示有了這個指令碼的路徑/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/zq/.local/bin:/home/zq/bin:/root[[email protected] ~]# first.sh           可以直接運行這個指令碼了  之前需要通過./執行的 mkdir: 無法建立目錄"/root/shell": 檔案已存在eno16777736: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500        inet 192.168.1.63  netmask 255.255.255.0  broadcast 192.168.1.255        inet6 fe80::20c:29ff:fedf:de30  prefixlen 64  scopeid 0x20<link>

這個只能當前有效,想要永久生效的話必須在/etc/profile最後邊加上剛剛設定的變數,儲存退出,source生效之後,就可以永久直接執行了。

vim /etc/profile  最後追加 所有使用者有效  重啟或 source方可使用

或只是root使用者生效的話 vim /root/.bash_profile 在這個檔案的最後追加

 

每個使用者還有自己的環境變數都在自己的宿主目錄中

 

 

位置變數

  為了使用shell指令碼程式:方便通過命令列為程式提供參數Bash引用了位置變數的概念

  當執行命令列操作時第一個欄位表示命令字或程式名,其餘的字串參數按照從左至右的順序一次給位置變數賦值

位置變數也叫位置參數,使用$1,$2,$3.....$表示

eg: 編寫一個加法運算的指令碼來說明位置變數

vim zq.sh

#!/bin/bashSUM=$(expr $1 + $2)echo "$1 + $2 = $SUM"

測試結果

[[email protected] ~]# vim zq.sh[[email protected] ~]# ./zq.shbash: ./zq.sh: 許可權不夠[[email protected] ~]# chmod u+x zq.sh[[email protected] ~]# ./zq.shexpr: 語法錯誤 +  = [[email protected] ~]# ./zq.sh 1 2  給變數賦值才可以1 + 2 = 3

 

預定義變數

$#:命令列中位置變數的個數(程式執行了幾個位置參數)

$*:所有位置變數的內容(具體的內容 比如/boot就是個具體內容)

$?:上一條命令執行後返回的狀態,當返回狀態值為0時表示執行正常,非0值表示執行異常或出錯取值在1-127之間

$0:當前執行的進程/程式名(就是當前執行的命令或程式的名字)

!$:表示上一個命令的最後一個參數

linux 特殊shell變數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.