平臺:debian8 + bash。
跑在我的終端下面的命令給了我以下結果:爲什麼不輸出非登錄外殼狀態的代碼?
prompt> echo $0
/bin/bash
我想要得到什麼shell登錄狀態,回聲給予比回聲$ SHELL更多信息。
1.殼型是bash的
2.it是一個非登錄殼
prompt> echo $0
-/bin/bash
這意味着不僅使用bash外殼,但只有一個登錄殼。
當我創建一個文件test.sh
,只包含行:
echo $0
運行它產生:
prompt> /bin/bash test.sh
test.sh
換句話說,我拿到劇本的名字,而不是外殼名。有沒有辦法得到殼牌名稱/bin/bash
而不是?
echo $ SHELL不是我想要的,echo $ SHELL只包含shell類型,不告訴我它是登錄shell或非登錄shell。
爲了讓我的意圖清晰,讓我們edite兩個文件:〜/ .profile文件和〜/ .bashrc中
vim .profile
varLog="i am login shell"
vim .bashrc
varLog="i am not login shell"
~$ /bin/bash
~$ echo $varLog
i am non-login shell
~$ /bin/bash --login
~$ echo $varLog
i am login shell
我們編輯bash腳本。
vim /tmp/decideShell.sh
echo $varLog
註銷並再次登錄。
[email protected]:~$ ls -al /tmp/decideShell.sh
-rw-r--r-- 1 debian8 debian8 13 Mar 8 09:40 /tmp/decideShell.sh
[email protected]:~$ /bin/bash /tmp/decideShell.sh
[email protected]:~$ /bin/bash --login /tmp/decideShell.sh
i am login shell
爲什麼沒有輸出爲/ bin/bash /tmp/decideShell.sh?
我*想*我已經整理它與您的實際意圖,請檢查並評論,如果我錯了。 – paxdiablo
是的,謝謝paxdiablo –
您可能正在尋找'shopt login_shell',但它不是很清楚。 –