Bash

為什麼’echo $0’為兩個不同的終端給出不同的結果?

  • February 8, 2014

Ctrl我使用++在AltUbuntu上打開了一個終端,T並通過轉到一個目錄然後右鍵點擊並選擇“在終端中打開”來打開另一個終端。

echo $0在這兩種情況下都做了。

在第一種情況下:

$ echo $0
-bash

在第二種情況下:

$ echo $0
/bin/bash

為什麼會有這種差異?

如果echo $0command 的輸出是-bash,則表示它 bash被作為登錄 shell 呼叫。如果輸出僅為bash,那麼您處於非登錄 shell 中。

man bash在第 126 行某處說:

A  login shell is one whose first character of argument zero is a -, or 
one started with the --login option.

在此處查看更多資訊:登錄 Shell 和非登錄 Shell 之間的區別?.

現在,為了解釋為什麼你會遇到/bin/bash第二種情況,我可以說一個程序(在你的情況下是你的文件管理器,可能是 nautilus)或腳本可以將自己的內容更改$0為其他內容。例如,看看$0我的終端發生了什麼(始終是同一個終端):

在此處輸入圖像描述

引用自:https://unix.stackexchange.com/questions/114058