互動 非互動 登入 非登入 shell

2021-10-05 05:25:51 字數 1923 閱讀 3836

1、互動shell

互動式:顧名思義就是 shell 與使用者存在互動,

使用者登入後,在終端上輸入命令,shell 立即執行使用者提交的命令。

當使用者退出後,shell 也終止了。

2、非互動shell

非互動式:即 shell 與使用者不存在互動,而是以 shell script 的方式執行的。

shell 讀取存放在檔案中的命令, 並且執行它們。

當它讀到檔案的結尾 eof,shell 也就終止了。

3、區分方法

可以通過列印 $- 變數的值,並檢視其中的 i - interactive 選項來區分互動式與非互動式shell。

比如:~> echo $-

himbh

有 i - interactive ,所以是 互動式 shell;反之則為非互動式。

1、登入shell

登入 shell 是指需要使用者名稱、密碼登入後進入的 shell,或者通過 --login 選項生成的 shell 。

2、非登入shell

非登入 shell 是指不需要輸入使用者名稱和密碼即可開啟的 shell,

比如輸入命令 bash或者sh 就能進入乙個全新的非登入 shell,

在 gnome 或 kde 中開啟乙個 「terminal」 視窗,也是乙個非登入 shell。

3、區分方法

如何區分登入 shell 和非登入 shell 呢,可以通過檢視 $0 的值,登入 shell 返回 -bash,而非登入 shell 返回的是 bash 。

需要注意的是:

執行 exit 命令, 退出的 shell 可以是登入 或者 非登入 shell ;

執行 logout 命令,則只能退出登入 shell,不能退出非登入 shell 。

:~> sh

:~> logout

sh: logout: not login shell: use `exit'

互動/非互動/登入/非登入 shell 這些組合情況, 在指令碼的呼叫方面有區別;而且對於 bash 與 sh 也存在差異;

以下分情況說明具體的呼叫情況(假如所執行指令碼名為 test.sh )

1、互動式的登入shell (bash –il test.sh)

載入的資訊:

/etc/profile

~/.bash_profile( -> ~/.bashrc -> /etc/bashrc)

~/.bash_login

~/.profile

2、非互動式的登入shell (bash –l test.sh)

載入的資訊:

/etc/profile

~/.bash_profile ( -> ~/.bashrc -> /etc/bashrc)

~/.bash_login

~/.profile

$bash_env

3、互動式的非登入shell (bash –i test.sh)

載入的資訊:

~/.bashrc ( -> /etc/bashrc)

4、非互動式的非登入shell (bash test.sh)

載入的資訊:

$bash_env

1、互動式的登入shell (sh –il test.sh)

載入的資訊:

/etc/profile

~/.profile

2、非互動式的登入shell (sh –l test.sh)

載入的資訊:

/etc/profile

~/.profile

3、互動式的非登入shell (sh –i test.sh)

載入的資訊:

$env

4、非互動式的非登入shell (sh test.sh)

載入的資訊:

nothing

這些配置的載入與否,導致了 linux 很多預設選項的差異。

互動式 非互動式,登入式 非登入式Shell

互動式shell和非互動式shell 互動式模式 在終端上執行,shell等待你的輸入,並且立即執行你提交的命令。這種模式被稱作互動式是因為shell與使用者進行互動。這種模式也是大多數使用者非常熟悉的 登入 執行一些命令 退出。當你退出後,shell也終止了。非互動式模式 以shell scrip...

互動式 vs 非互動式 登入式 vs 非登入式

方式 區別區分方法 互動式與使用者互動 echo 返回值有i 非互動式 與script互動 echo 返回值沒有i 方式 登入區別 退出區別 區分方法 登入式需要username pwd logout exit echo 0 返回是 bash 非登入式 無需要username pwd exit ec...

Mac終端非互動登入遠端伺服器

對於研發來說,經常需要在各個環境的伺服器中來回切換,來跟進專案日誌,快速定位問題。在終端使用 ssh 命令來登入各個伺服器,最重要的是你不僅要記得各個伺服器的 ip 使用者名稱 密碼等資訊,而且每次的登入都需要手動輸入以上資訊,這些個重複機械的動作,可以考慮讓機器來做就好了,為我們節約時間。usr ...