Shell總結11 shell執行模式

2022-07-19 09:51:07 字數 2444 閱讀 2145

以互動式方式執行的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 ...