題 我在連接SSH後從bash運行zsh - 如何只用一個命令退出兩個?


我在我的服務器上運行zsh,我想要別名 exit 命令,因為每當我嘗試終止我的SSH會話時,我必須退出 zsh 並退出 bash

我試過了 alias exit='exit;exit' 無濟於事。

我不想改變我的開始 zsh 但我認為這不是一個很好的解決方案。我附上了 zsh 至 /etc/profile

如何避免打字 exit 兩次終止我的SSH會話?


4
2017-11-30 22:31


起源


嘗試按兩次ctrl + d,它也會讓你退出終端。 - Thom Wiggers
澄清, bash 是你的登錄shell,你通過手動啟動它運行zsh?你考慮過製作嗎? zsh 您的登錄shell或使用它運行它 exec 內置, 更換 該 bash 處理? - Daniel Beck♦
當我想改變如何啟動zsh時,我必須將zsh附加到〜/ .bashrc嗎?我怎樣才能完全取代bash? - Bytemain
@Daniel:我怎麼能這樣做? - Bytemain


答案:


bash 是您系統上帳戶的默認登錄shell。要改變它,請執行@KevinPanko建議的內容。然後 bash 不會只是開始 zsh。鑑於此,通過 /etc/profile,你總是在開始 zsh 此刻(而不僅僅是有時),這可能是最好的方式。


或者,您可以使用 exec 內置命令 bash 替換你的 bash 處理。 man bash 狀態:

exec ... [command [arguments]]

如果指定了command,它將替換shell。沒有創建新進程。參數成為命令的參數。

所以你可以跑 zsh 像這樣:

exec zsh

之後,如果你退出 zsh,退出正在運行的唯一shell,並立即退出。


10
2017-11-30 22:53



當我使用chsh可以打破一些東西嗎?我可以在破壞某些東西時啟動SSH會話,我的意思是什麼時候bash或zsh並且兩者都不再加載? SSH有故障保護嗎? - Bytemain
您可以為SSH提供運行命令: ssh -t hostname /bin/bash - Kevin Panko
@jitamaro直接訪問計算機或以其他用戶身份登錄是您的故障安全。如果你真的設法弄亂了你的shell二進製文件,你就會以root身份犯下愚蠢的錯誤,並且應該從備份中恢復;) - Daniel Beck♦
@Dainiel:我沒有物理訪問該框,我只有一個用戶(root)。創建另一個用戶或給SSH運行命令是一個好習慣嗎? - Bytemain
@jitamaro不以root身份運行,除非你絕對必須知道你在做什麼。沒有冒犯,但聽起來你可能會從閱讀一兩個關於Linux使用的教程中獲益。?這就解釋了為什麼多個用戶是好事, - Daniel Beck♦


chsh 命令允許您更改帳戶的登錄shell。

您可能需要添加 /bin/zsh 到你的 /etc/shells 文件,如果它不存在。


5
2017-11-30 22:46



如果您連接的服務器使用LDAP或類似服務器,則必須使用 ypchsh 而命令。 - Erik