How to remove the return code from the terminal prompt in Sugar on a Stick?
In addition to the PS1
environment variable, the PROMPT_COMMAND
environment variable also affects your prompt. From the bash man page:
If set, the value is executed as a command prior to issuing each primary prompt
It is that command that is adding the unwanted content to your prompt. You can stop that behavior by unsetting the variable in your .bashrc:
unset PROMPT_COMMAND
Related videos on Youtube
![Mateusz Piotrowski](https://i.stack.imgur.com/lIYBa.png?s=256&g=1)
Mateusz Piotrowski
Updated on September 18, 2022Comments
-
Mateusz Piotrowski almost 2 years
I am using Sugar on a Stick (Fedora 23) 0.106 for i686 as a distro.
When I use the terminal I get a very weird behaviour.
For example when I type
ls
I get]777;notify;Command completed;ls[sugar] #
where[sugar] #
is the value of myPS1
environmental variable.My
.bashrc
look like this:# .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # Prompt PS1="[sugar] # " # Uncomment the following line if you don't like systemctl's auto-paging feature: # export SYSTEMD_PAGER= # User specific aliases and functions
The problem is gone when I comment out the
Source global definitions
section. However when I wanted to modify the/etc/bashrc
I read that it is not wise to modify this file. Here's the file:# /etc/bashrc # System wide functions and aliases # Environment stuff goes in /etc/profile # It's NOT a good idea to change this file unless you know what you # are doing. It's much better to create a custom.sh shell script in # /etc/profile.d/ to make custom changes to your environment, as this # will prevent the need for merging in future updates. # are we an interactive shell? if [ "$PS1" ]; then if [ -z "$PROMPT_COMMAND" ]; then case $TERM in xterm*|vte*) if [ -e /etc/sysconfig/bash-prompt-xterm ]; then PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm elif [ "${VTE_VERSION:-0}" -ge 3405 ]; then PROMPT_COMMAND="__vte_prompt_command" else PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"' fi ;; screen*) if [ -e /etc/sysconfig/bash-prompt-screen ]; then PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen else PROMPT_COMMAND='printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"' fi ;; *) [ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=/etc/sysconfig/bash-prompt-default ;; esac fi # Turn on parallel history shopt -s histappend history -a # Turn on checkwinsize shopt -s checkwinsize [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ " # You might want to have e.g. tty in prompt (e.g. more virtual machines) # and console windows # If you want to do so, just add e.g. # if [ "$PS1" ]; then # PS1="[\u@\h:\l \W]\\$ " # fi # to your custom modification shell script in /etc/profile.d/ directory fi if ! shopt -q login_shell ; then # We're not a login shell # Need to redefine pathmunge, it get's undefined at the end of /etc/profile pathmunge () { case ":${PATH}:" in *:"$1":*) ;; *) if [ "$2" = "after" ] ; then PATH=$PATH:$1 else PATH=$1:$PATH fi esac } # By default, we want umask to get set. This sets it for non-login shell. # Current threshold for system reserved uid/gids is 200 # You could check uidgid reservation validity in # /usr/share/doc/setup-*/uidgid file if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then umask 002 else umask 022 fi SHELL=/bin/bash # Only display echos from profile.d scripts if we are no login shell # and interactive - otherwise just process them to set envvars for i in /etc/profile.d/*.sh; do if [ -r "$i" ]; then if [ "$PS1" ]; then . "$i" else . "$i" >/dev/null fi fi done unset i unset -f pathmunge fi # vim:ts=4:sw=4
What can I do about it?
-
Mateusz Piotrowski over 8 yearsThank you. Adding
unset PROMPT_COMMAND
after the#Source global definitions
section solved the problem. -
DEAR ANGEL over 6 yearsYes, it works, but I fail to understand why. I have two nearly identical systems, and switching to root (using the '
su
' command) triggers that decoration (']777;notify;Command completed;...
') on one but it does not on another. I'd like to understand what differs.