为什么我的 shell 打开了许多它自己的实例?

为什么我的 shell 打开了许多它自己的实例?

我一直在摆弄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 手册页告诉您需要进行哪些更改才能获得良好的提示符。

相关内容