我正在編寫一個.sh腳本,它將在某些時候將用戶的shell更改爲/ bin/zsh。命令如下課程:確定當前用戶的shell
chsh -s /bin/zsh
然而,這要求用戶輸入的密碼,我想如果當前用戶的shell是不是已經/bin/zsh
只執行它。爲此,我需要一個能夠讓我知道當前shell的命令,並將它與"/bin/zsh"
或類似內容進行比較。我發現有一個c getusershell
函數,但是沒有辦法從shell腳本中知道這一點嗎?
更新:對不起,我的意思是用戶指定的shell作爲他的首選shell。所以是的,在/etc/passwd
中指定的那個。這背後的邏輯是,腳本將要將用戶的首選shell更改爲zsh,並且我只希望腳本首先檢查它是不是zsh。
grep/etc/passwd來獲取用戶的「官方」shell。但請注意,它們可能不會從該shell實際運行該腳本。他們可以很好地登錄使用(說)短跑,手動運行bash,並已切換到korn外殼,等等...... –
@MarcB如果我們只支持Linux,最好使用'getent passwd「$ USER」'因爲getent將搜索在nsswitch(LDAP,NIS等)中配置的whahtever,而greet「/ etc/passwd」只能在配置爲_use_/etc/passwd的系統上運行。 –
「當前shell」是什麼意思?當前在'/ etc/passwd'中指定的那個還是當前正在執行的那個? – Jens