In my Ubuntu 12.04, the prompt always show the following only (no matter what path I'm in):


I guessed it is because .bashrc or .bash_profile is configured incorrectly.

My .bashrc is as follow:

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar

# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color) color_prompt=yes;;

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
    # We have color support; assume it's compliant with Ecma-48
    # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
    # a case would tend to support setf rather than setaf.)

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host:dir
case "$TERM" in
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'

# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

# Add an "alert" alias for long running commands.  Use like so:
#   sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion

and my .bash_profile is as follow:

JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")

How do I restore the default settings (to show the current directory) in my shell?

UPDATE: Here is the output of bash -x:

http://pastebin.com/HT4xncGw (way too long to paste here)

  • You need to change PS1 variable. – cuonglm Oct 14 '15 at 6:37
  • As I can see there is a root terminal… – Costas Oct 14 '15 at 6:40
  • How do you run bash? Run bash -x inside the first one and post the full output. – Gilles Oct 14 '15 at 22:48
  • added the output of bash -x in the question. – Raptor Oct 15 '15 at 2:02

This is normally specified in the file /etc/bash.bashrc on Ubuntu systems. The environment variable $PS1 sets the values of the shell prompt. This is Ubuntu's default prompt:

PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

Copy that line in your /etc/bash.bashrc (maybe it is already there, but commented). However, after that, open a new bash process and your prompt should be set again.

  • the exact line is in the /etc/bash.bashrc uncommented, and it's not overwritten by the lines after that... – Raptor Oct 14 '15 at 6:58
  • What's the output of echo $PS1 in that terminal? – chaos Oct 14 '15 at 7:03
  • The output is \s-\v\$ , don't know where it is overwritten... – Raptor Oct 14 '15 at 7:09
  • Search for it: grep -r "PS1" ~ /etc/. It must be somewhere in the homedirectory or in /etc – chaos Oct 14 '15 at 7:12
  • you won't believe that, the \s-\v\$ does not appear in the search result of grep -Ir "PS1" ~ /etc/ ( I filtered away the binary results ) – Raptor Oct 14 '15 at 7:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.