以互動式方式執行的shell指的是通過終端terminal和使用者互動執行的shell。shell等待你從鍵盤上輸入,然後將結果顯示在螢幕上輸出。比如執行從字元終端登入介面。
以非互動式方式執行的shell就是執行過程中不需要與使用者輸入輸出打交道的shell。比如執行乙個靜默安裝的自動化的指令碼。
if [ "$ps1" ]; then
echo "this is interactive shell"
fi
顧名思義需要登入shell:需要使用者名稱、密碼才能執行的shell或者指定—login或-l選項的shell
非登入shell:不需要使用者名稱、密碼就可以開啟的shell,例如:預設sh下直接bash就可以開啟乙個新的非登入shell;在gnome圖形介面下開啟的terminal視窗程式。
包括正常模式ttyn下的終端登入(可以ctrl+alt+fn切換)、遠端ssh登入都是互動式+登入式的shell
終端登入
ssh遠端登入
last login: mon jul 02 11:35:34 2020 from 192.168.56.1
[nginx@nginx-node01 ~]$ echo $ps1;shopt login_shell
[\u@\h \w]\$
login_shell on
[nginx@nginx-node01 ~]$
su在預設沒有-或—logoin的情況下是互動式+非登入式的shell
su - username 或 su username —login
[nginx@nginx-node01 ~]$ su - root
password:
last login: mon jul 20 13:02:37 edt 2020 on pts/0
[root@nginx-node01 ~]# echo $ps1;shopt login_shell
[\u@\h \w]\$
login_shell on
su username[nginx@nginx-node01 ~]$ su root
password:
[root@nginx-node01 nginx]# echo $ps1;shopt login_shell
[\u@\h \w]\$
login_shell off
a. 本地的子shell中的命令
執行不帶"--login"選項的sh或者bash命令(本地的子shell)時為互動式、非登入式shell
[nginx@nginx-node01 ~]$ sh
sh-4.2$ echo $ps1;shopt login_shell
\s-\v\$
login_shell off
[nginx@nginx-node01 ~]$ sh -l
sh-4.2$ echo $ps1;shopt login_shell
\s-\v\$
login_shell on
b. 遠端shell中命令
執行ssh遠端shell命令時儘管有輸入密碼認證的過程但是執行命令仍為非互動+非登入式的shell
hackun@macbookpro:~$ ssh [email protected] 'echo $ps1;shopt login_shell'
[email protected]'s password:
login_shell off
執行本地shell指令碼時,為非互動式+非登入式的shell。指定"—login"後,將成為非互動+登入式的shell。
[nginx@nginx-node01 ~]$ cat << eof >>test.sh
> echo $ps1
> shopt login_shell
> eof
[nginx@nginx-node01 ~]$ bash test.sh
[u@h w]$
login_shell off
[nginx@nginx-node01 ~]$ bash --login test.sh
[u@h w]$
login_shell on
[nginx@nginx-node01 ~]$
Shell指令碼學習11 Shell注釋
以 開頭的行就是注釋,會被直譯器忽略。sh裡沒有多行注釋,只能每一行加乙個 號。只能像這樣 這是乙個自動打ipa的指令碼,基於webfrogs的ipa build書寫 特色 全自動打包,不需要輸入任何引數 使用者配置區 開始 專案根目錄,推薦將此指令碼放在專案的根目錄,這裡就不用改了 使用者配置區 ...
Shell指令碼學習11 Shell注釋
以 開頭的行就是注釋,會被直譯器忽略。sh裡沒有多行注釋,只能每一行加乙個 號。只能像這樣 這是乙個自動打ipa的指令碼,基於webfrogs的ipa build書寫 特色 全自動打包,不需要輸入任何引數 使用者配置區 開始 專案根目錄,推薦將此指令碼放在專案的根目錄,這裡就不用改了 使用者配置區 ...
運維常用shell
列出你最常用的10條shell history awk end sort rn head history awk end sort rn head grep v bash history awk end head 網路連線數目 netstat an grep e tcp cut c 68 sort ...