我关闭了终端杀死了一个进程,之后打开一个新终端时提示不在那里。
在网上搜索其他问题后,用 CTRL-C y 得到提示。但是,当打开一个新终端时,提示又消失了。
我试过以下代码:
^Cmartin@martin-N550JV:~$
martin@martin-N550JV:~$ ps
PID TTY TIME CMD
17626 pts/0 00:00:02 bash
20957 pts/0 00:00:00 ps
martin@martin-N550JV:~$ sudo kill 20957
[sudo] password for martin:
martin@martin-N550JV:~$ sudo kill 17626
martin@martin-N550JV:~$
Run Code Online (Sandbox Code Playgroud)
取自本站
我也卸载了然后重新安装了终端,但没有成功。
有解决方案吗?
当您打开终端时,您将获得一个非登录的交互式 shell。如果您使用的bash是系统范围内的 per-interactive-shell 启动文件,/etc/bash.bashrc并且用户级别的 per-interactive-shell 启动文件是~/.bashrc.
您面临的问题可能是由于这两个文件中的任何一个中存在任何错误指令。
来自 OP 的回复:
采购
~/.bashrc启动问题。这意味着有问题~/.bashrc
bash提示消失的可能原因:
可能存在可以创建无限循环类型情况的递归采购。例如,如果你~/.bashrc喜欢的地方有线条,
if [ -f ~/.profile ]; then
. ~/.profile
fi
Run Code Online (Sandbox Code Playgroud)
它将来源~/.profile. 但请记住,~/.profile总是来源~/.bashrc(这是正确的方式)。因此,您处于无限循环中。不要~/.profile来自~/.bashrc
在这种情况下你不能得到提示,除非你点击Ctrl+C
故障排除
你可以在你的 ~/.bashrc
set -x
Run Code Online (Sandbox Code Playgroud)
然后您可以看到当您打开终端时文件描述符正在停止。
如何恢复
备份~/.bashrc并从/etc/skel. 在终端中使用,
mv ~/.bashrc ~/bashrc.bkp
cp /etc/skel/.bashrc ~/
Run Code Online (Sandbox Code Playgroud)
它会~/.bashrc用一个新的代替你的。
问题要么和我预期的一样(如上所述),要么更换后应该解决其他问题,~/.bashrc因为它完全与您的~/.bashrc.