我一直在摆弄chsh
命令,以便在发出每个命令之前更改 shell 中显示的名称,例如picard@ubuntu:$
。当我给出命令时,我的问题出现了chsh -s /bin/ksh picard
,但我并不完全知道结果会是什么。在这个命令中,我也使用了grep ksh /etc/shells/
。现在,任何时候我尝试打开终端,无论是 bash、dash、sh 还是 urxvt,它要么就是不打开,要么开始生成 urxvt 实例,直到它打开了太多实例,计算机挂起,然后所有实例都关闭。
我到底搞砸了什么?我真的不想重新安装,但没有命令行我就无法使用 Linux,我相信你们也能理解。
答案1
该命令chsh
与更改提示无关。由于chsh(1) 的手册页写道,它的目的是改变你的登录 shell。所以此刻ksh
是你的登录 shell。如果你想改变它,只需输入
chsh -s /bin/bash picard
这将创建bash
您的登录 shell。通常这是 Ubuntu 的默认设置。
您还可以使用命令urxvt -e /bin/bash
或直接打开终端urxvt -e bash
。当您打开终端而不使用选项时-e
,系统将启动ksh
。默认情况下ksh
仅使用$
提示符。这就是为什么您看不到花哨的user@system
提示符。
但是,更改回登录 shell 的另一种方法是编辑/etc/passwd
。使用您喜欢的编辑器打开文件,例如:
sudo vim /etc/passwd #or
sudo nano /etc/passwd #or
gksudo gedit /etc/passwd
并移至包含您的用户名的行。在该行末尾,您将找到/bin/ksh
。将其更改为/bin/bash
,保存文件并再次登录。现在您应该可以恢复您常用的 shell。
如果您想更改提示符,请输入echo $PS1
以查看实际设置。bash 手册页告诉您需要进行哪些更改才能获得良好的提示符。