題 當ssh進入我的服務器時,如何從bash開始?


我有一個託管的Debian服務器。當我通過ssh登錄時,我受到了環境的歡迎。如何更改它以便我在bash環境中啟動?


24
2018-02-05 04:59


起源


不是一個編程問題。在將來,你最好提出這樣的問題 在Unix / Linux。 - tylerl


答案:


作為普通用戶,您可以使用更改默認登錄shell chsh 命令。這是一個例子:

chsh -s /bin/bash

另一個選擇是使用usermod作為root:

usermod -s /bin/bash username

30
2018-02-05 05:02



usermod就像一個魅力。當我添加新用戶時,是否有某種方法將其設置為默認為bash,或者每次都必須運行命令?
如果你使用 adduser,它應該默認設置為bash。默認配置為 /etc/adduser.conf。否則明確指定shell useradd。 - jordanm


你編輯 /etc/passwd 最後一個條目是默認shell。做了 /bin/bash

或者,您可以更改系統默認值 /bin/sh 不是打擊。


5
2018-02-05 05:01



喲,推動下來投票怎麼樣?例如,Ubuntu默認為 /bin/sh 存在 /bin/dash。而另外兩個答案是值得的 相同 通過不同的方式達到同樣的目的。隨你。 - Dirk Eddelbuettel
手動編輯 /etc/passwd 非常沮喪。編輯錯誤可能會破壞所有用戶的登錄,需要恢復介質或啟動到單用戶模式進行修復。有工具,如 usermod 改變 /etc/passwd。 - jordanm
廢話。從94年開始運行Linux。從來沒有打掉 /etc/passwd。 - Dirk Eddelbuettel
很高興聽到你一直非常小心。不是每個人都有。有關您的更新的另一個註釋,即啟動 /bin/bash如 /bin/sh 與執行它一樣 --posix,這可能會產生不良後果。 - jordanm
看,我自1995年以來一直是Debian的開發者/維護者。我們曾經將bash作為默認值,出於各種原因我們切換到更簡單的shell。我一直在用 /bin/bash 所有機器上的所有那些年份都是我的外殼。你需要一個更具體的論點。 - Dirk Eddelbuettel


您需要編輯您的用戶配置文件,您可以通過編輯直接執行此操作 /etc/passwd 文件,或者你可以使用 usermod 命令為你做。您正在尋找的語法如下所示:

usermod -s /bin/bash joeuser

2
2018-02-05 05:03





默認系統shell /bin/sh 在最近的Ubuntu版本中配置為 /bin/dash。只需運行以下命令:

sudo dpkg-reconfigure dash

你可以把它改回舊的默認值 /bin/bash

有了這個,你就可以達到理想的效果 bash 作為交互式shell而不改變任何用戶設置(沒有 chsh 要么 usermod),它將適用於當前已設置shell的所有用戶 /bin/sh

這只有一個小缺點:Ubuntu啟動時間可能略有增加,因為 dash 加載的內存更少,運行速度更快(難怪 - 它的功能非常有限)。但我認為衡量這種影響相當困難,特別是對於託管環境。

此外,有時候看到shell腳本因為使用了一些而無法正常工作,這很煩人 bash 不支持的高級功能 dash。使用此配方將確保不會發生這種情況。

有關更多信息,請參閱Ubuntu wiki 這個問題


1
2018-02-05 09:02



你應該將用例分開: /bin/sh 用作POSIX兼容shell腳本的解釋器 - 它不一定是最好的交互式shell;如果你想 bash 要成為您的系統shell,您應該使用設置首選登錄shell chsh 或適當的 adduser 調用。運用 dpkg-reconfigure 如果userA想要zsh並且userB想要bash並且兩者都堅持將/ bin / sh作為其默認shell,那麼這是一個糟糕的選擇。 - umläute
如果userA明確配置為 zsh,和userB到 bash 他們會擁有它。如果userC配置為 sh, 他會有 bash,無論如何,這是新用戶的當前Ubuntu默認值 - mvp
當然,但你的解決方案建議類似 dpkg-reconfigure zsh 設置 zsh as / bin / sh,然後 dpkg-reconfigure dash 設置 dash as / bin / sh這是一種僵局;我主要是說最好將登錄shell設置為想要使用的shell,而不是通過箍來使/ bin / sh成為一個好的登錄shell。 - umläute
我只說了那個 dpkg-reconfigure dash 可以使 sh 指向 bash而不是殘廢 dash。所有其他砲彈仍然完好無損。 - mvp


對於您嘗試使用共享帳戶(無論出於何種原因)並且無法更改默認shell的情況,您可以運行

ssh -t <user@hostname> bash -l

如果你需要將你的環境與其他shell保持一致,那麼你可以先運行那個shell;例如

ssh -t <user@hostname> ksh -c bash -l

1
2017-11-15 16:24



這很好用,但為什麼呢 -l 選項? - nbkhope
@nbkhope它將確保為您運行.bashrc。 - UKMonkey