變量的分類:
本地變量:只對當前用戶的shell有用
聲明方法:變量名(大寫)= “xxxxx” 或 ’ xxxxx’
環境變量:對當前用戶寫的shell和子shell都有效
聲明方法:export 變量名(大寫)= “xxxxx” 或 ’ xxxxx’
查看環境變量:
[[email protected] tmp]# export
DISPLAY:定義是哪個主機,第幾個屏幕顯示
HISTSIZE:定義history中存取歷史記錄的條數
HOME:當前用戶的家目錄
PATH:執行外部命令(非當前shell自帶的命令)就在PATH顯示的路徑中查找
USER:當前用戶名
SHELL:當前使用的shell
其他查看環境變量的方法:printevn和evn
變量的引用:
eg:
[[email protected] ~]#DIR=’/tmp/script’ 定義變量
[[email protected] ~]#cd $DIR 通過$對變量進行引用
[[email protected] ~]#mkdir $DIR
[[email protected] ~]#unset DIR 釋放變量
查看變量內容:
將字符輸出到顯示器使用echo命令
[[email protected] ~]# echo 字符信息
要查看變量中的字符,需要使用 $變量
[[email protected] ~]# echo $變量 即將變量內字符輸出
特殊變量:$?
$?中的值是上一條命令執行的結果(成功:0,失敗1~255)
[[email protected] ~]#cd
[[email protected] ~]# echo $?
0
[[email protected] ~]# cdd
-bash: cdd: command not found
[[email protected] ~]# echo $?
127
位置變量:$1,$2,$3…
作用:將從輸入內容導入腳本
eg:
腳本:
#!/bin/bash
echo $1
echo $2
echo $3
執行腳本:
[[email protected] ~]#腳本名 字符1 字符2 字符3
執行結果:
字符1 字符2 字符3
算術運算:
linux中默認所有變量都是字符,所以要執行算術運算需加[ ]或$(( ))。
eg:
腳本內容:
#!/bin/bash
echo $[$1+$2]
執行腳本:
[[email protected] ~]#/sum.h 4 5
9
alias別名的查看與創建:
[[email protected] ~]#alias 直接輸入alias顯示當前環境中的別名
[[email protected] ~]# alias cdnet="cd /etc/sysconfig/networking" 給命令創建別名
[[email protected] ~]# cdnet 輸入別名後實現與輸入命令相同的作用
[[email protected] networking]#
[[email protected] ~]#unset cdnet 撤銷別名
無論是直接定義的本地變量還是用export聲明的環境變量,在重新登錄或reboot之後都會消失。若想對其進行長久保存,需要在相關的配置文件中進行修改。
相關的配置文檔目錄:
全局相關:
/etc/profile
/etc/profile.d/*
/etc/bashrc
局部相關(即每個用戶有可以設定自己的一套配置)
~/.bash_profile
~/.bashrc
profile類文件:設置環境變量;
設置某些登陸時就要運行的命令。
bashrc類文件:設置別名;
設置本地變量,和只對當前shell有效的命令。
shell按照過程和應用次序可以分為:非交互式登陸式的shell和交互式登陸式的shell
非交互式登陸式的shell,啟動系統時自動執行。
啟動順序為:~/.bashrc→/etc/bashrc→/etc/profile.d/*
交互式登陸式的shell,修要登錄用戶進入系統輸入命令。
啟動順序為:/etc/profile→/etc/profile.d/*→~/.bash_profile→/etc/bashrc
eg:
通過修改配置文件實現用戶登錄進系統時候,屏幕顯示字符串“Hello,you are root(當前用戶的用戶名)。”
由於是對於每個用戶alluser都有相同的配置,所以應該是全局變量/etc/profile,通過編輯器在文本的最後一行加入“ echo "hello,you are $USER." ”即可。