Bash
為什麼’echo $0’為兩個不同的終端給出不同的結果?
Ctrl
我使用++在Alt
Ubuntu上打開了一個終端,T
並通過轉到一個目錄然後右鍵點擊並選擇“在終端中打開”來打開另一個終端。我
echo $0
在這兩種情況下都做了。在第一種情況下:
$ echo $0 -bash
在第二種情況下:
$ echo $0 /bin/bash
為什麼會有這種差異?
如果
echo $0
command 的輸出是-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
我的終端發生了什麼(始終是同一個終端):