2

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.

weird codes

For example when I type ls I get ]777;notify;Command completed;ls[sugar] # where [sugar] # is the value of my PS1 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?

0
4

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
2
  • Thank you. Adding unset PROMPT_COMMAND after the #Source global definitions section solved the problem. – Mateusz Piotrowski Nov 24 '15 at 21:24
  • Yes, 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. – Urhixidur Sep 26 '17 at 18:33
0

comment the string as shown

sudo vim /etc/profile.d/vte.sh
...
_vte_prompt_command() {
...
#printf "\033]777;notify;Command completed;%s\007\033]0;%s@%s:%s\007%s" "${command}" "${USER}" "${HOSTNAME%%.*}" "${pwd}" "$(__vte_osc7)"
}
0

This is also happening on Fed 28 when running su from a user's terminal. Running "su - " will not produce this problem.

There is an identical code snippet in both /etc/bashrc and /etc/profile.d/vte.sh for testing the env. and setting PROMPT_COMMAND. Playing with the code reveals that it is the former which is being executed.

0

In EL7, we found updating mate-terminal and vte* packages worked.

You will need to close all mate terminals and re-open them because mate keeps the same process and launches new windows, so it needs to start fresh to launch the new libraries.

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.