Ubuntu – Terminal not working. Prompt gone!

command line

I've closed the terminal killing a process, after that when opening a new terminal the prompt wasn't there.

After searching online other questions, with CTRL-C y get the prompt back.
However, when opening a new terminal the prompt is gone again.

I've tried the following code:

^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:~$ 

Taken from this site

I've also uninstalled and then re-installed the terminal, with no success.

Is there a solution for this?

Best Answer

  • When you open a terminal you get a non-login, interactive shell. If you are using bash the system-wide per-interactive-shell startup file is /etc/bash.bashrc and user-level per-interactive-shell startup file is ~/.bashrc.

    The problem you are facing may be due to presence of any bad instruction(s) in any of these two files.

    From OP's reply:

    sourcing ~/.bashrc initiate the problem. That means there is problem with ~/.bashrc

    Possible reasons of disappearing bash prompt:

    There might be recursive sourcing that can create an infinite loop type situation. For example if there are lines present in your ~/.bashrc like,

    if [ -f ~/.profile ]; then
       . ~/.profile
    fi
    

    It will source ~/.profile. But keep in mind that ~/.profile always sources ~/.bashrc (it is correct way). Hence you are in an infinite loop. Do not source ~/.profile from ~/.bashrc

    Under such situation you can not get the prompt unless you hit Ctrl+C

    Troubleshooting

    You can put a line in your ~/.bashrc

    set -x
    

    Then you could see that the file descriptor is stopping when you open a terminal.

    How to recover

    Take backup of ~/.bashrc and get a new one from /etc/skel. Use in terminal,

    mv ~/.bashrc ~/bashrc.bkp
    cp /etc/skel/.bashrc ~/
    

    It will replace your ~/.bashrc with a new one.

    Either the problem is like as I expected (described above) or something else should be solved after replacing ~/.bashrc as it is solely related to your ~/.bashrc.