Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Steps to reproduce:

  1. Have zsh as default shell.
  2. Open a new terminal. for example, with Ctrl+Alt+T.
  3. Press Ctrl+Shift+T to open a new terminal tab.
  4. ^T% appears as the first line

I'm running ubuntu 11.10 with lxde and zsh-4.3.11.

Gnome-terminal doesn't have this problem.

Contents of /etc/zsh/zshrc:

# /etc/zsh/zshrc: system-wide .zshrc file for zsh(1).
# This file is sourced only for interactive shells. It
# should contain commands to set up aliases, functions,
# options, key bindings, etc.
# Global Order: zshenv, zprofile, zshrc, zlogin


if [[ "$TERM" != emacs ]]; then
[[ -z "$terminfo[kdch1]" ]] || bindkey -M emacs "$terminfo[kdch1]" delete-char
[[ -z "$terminfo[khome]" ]] || bindkey -M emacs "$terminfo[khome]" beginning-of-line
[[ -z "$terminfo[kend]" ]] || bindkey -M emacs "$terminfo[kend]" end-of-line
[[ -z "$terminfo[kich1]" ]] || bindkey -M emacs "$terminfo[kich1]" overwrite-mode
[[ -z "$terminfo[kdch1]" ]] || bindkey -M vicmd "$terminfo[kdch1]" vi-delete-char
[[ -z "$terminfo[khome]" ]] || bindkey -M vicmd "$terminfo[khome]" vi-beginning-of-line
[[ -z "$terminfo[kend]" ]] || bindkey -M vicmd "$terminfo[kend]" vi-end-of-line
[[ -z "$terminfo[kich1]" ]] || bindkey -M vicmd "$terminfo[kich1]" overwrite-mode

[[ -z "$terminfo[cuu1]" ]] || bindkey -M viins "$terminfo[cuu1]" vi-up-line-or-history
[[ -z "$terminfo[cuf1]" ]] || bindkey -M viins "$terminfo[cuf1]" vi-forward-char
[[ -z "$terminfo[kcuu1]" ]] || bindkey -M viins "$terminfo[kcuu1]" vi-up-line-or-history
[[ -z "$terminfo[kcud1]" ]] || bindkey -M viins "$terminfo[kcud1]" vi-down-line-or-history
[[ -z "$terminfo[kcuf1]" ]] || bindkey -M viins "$terminfo[kcuf1]" vi-forward-char
[[ -z "$terminfo[kcub1]" ]] || bindkey -M viins "$terminfo[kcub1]" vi-backward-char

# ncurses fogyatekos
[[ "$terminfo[kcuu1]" == ""* ]] && bindkey -M viins "${terminfo[kcuu1]/O/[}" vi-up-line-or-history
[[ "$terminfo[kcud1]" == ""* ]] && bindkey -M viins "${terminfo[kcud1]/O/[}" vi-down-line-or-history
[[ "$terminfo[kcuf1]" == ""* ]] && bindkey -M viins "${terminfo[kcuf1]/O/[}" vi-forward-char
[[ "$terminfo[kcub1]" == ""* ]] && bindkey -M viins "${terminfo[kcub1]/O/[}" vi-backward-char
[[ "$terminfo[khome]" == ""* ]] && bindkey -M viins "${terminfo[khome]/O/[}" beginning-of-line
[[ "$terminfo[kend]" == ""* ]] && bindkey -M viins "${terminfo[kend]/O/[}" end-of-line
[[ "$terminfo[khome]" == ""* ]] && bindkey -M emacs "${terminfo[khome]/O/[}" beginning-of-line
[[ "$terminfo[kend]" == ""* ]] && bindkey -M emacs "${terminfo[kend]/O/[}" end-of-line

zstyle ':completion:*:sudo:*' command-path /usr/local/sbin /usr/local/bin \
                 /usr/sbin /usr/bin /sbin /bin /usr/X11R6/bin

unalias run-help
autoload run-help

# If you don't want compinit called here, place the line
# skip_global_compinit=1
# in your $ZDOTDIR/.zshenv or $ZDOTDIR/.zprofice
if [[ -z "$skip_global_compinit" ]]; then
  autoload -U compinit

Contents of ~/.zshrc:

# The following lines were added by compinstall

zstyle ':completion:*' completer _expand _complete _ignored _correct _approximate
zstyle ':completion:*' group-name ''
zstyle ':completion:*' list-colors ''
zstyle ':completion:*' matcher-list '' 'm:{[:lower:]}={[:upper:]} m:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'r:|[._-]=* r:|=*' '+l:|=* r:|=*'
zstyle :compinstall filename '/home/kirill/.zshrc'

autoload -Uz compinit promptinit zcalc zsh-mime-setup
# End of lines added by compinstall
# Lines configured by zsh-newuser-install
setopt appendhistory autocd extendedglob notify sharehistory
#{{{ Shell Conveniences

# some more ls aliases
alias ls='ls --color'
alias lt='ls --color -ltr'
alias ll='ls -l'
alias lh='ls -l -h'
alias la='ls -A'
alias l='ls -CF'
alias vir='vim -R'
alias vimnw='vim -R +"set nowrap"'
alias tok='top -n1 -b -u kirill'
alias gt='gnome-terminal'
alias gts='gnome-terminal --window-with-profile=shnurov'

#alias tv='/usr/toolworks/totalview.8.6.2-2/bin/totalview'
#alias mpic='mpiCC.openmpi -o main -I/usr/local/include/boost-1_39/ main.cc -Llibdir -lboost_mpi-gcc43-mt-1_39 -lboost_serialization-gcc43-mt-1_39'
#alias mpir='mpirun.openmpi -np 7 ./main'
alias sage='~/progs/sage-4.8/sage'
#alias gmolden='/home/kirill/progs/molden/gmolden'
#alias molden='/home/kirill/progs/molden/molden'
#export LD_LIBRARY_PATH=/home/kirill/progs/molekel_5_4_0_linux_x86_64/lib:$LD_LIBRARY_PATH
#alias molekel='/home/kirill/progs/molekel_5_4_0_linux_x86_64/bin/Molekel'
#alias molekel='source /home/kirill/progs/molekel_5_4_0_linux_x86_64/launch_molekel.sh'
alias duh='du -s -h'
alias mam='make; time ./main'
alias mac='make clean;make;time ./main'
alias atdtool='~/progs/atdtool/atdtool'
alias acro='acroread -openInNewWindow'

bindkey -e

bindkey "^[[A" history-beginning-search-backward
bindkey "^[[B" history-beginning-search-forward
# End of lines configured by zsh-newuser-install
# Customize to your needs...
export PATH=/opt/intel/composer_xe_2011_sp1.6.233/bin/intel64:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/intel/composer_xe_2011_sp1.6.233/mpirt/bin/intel64
#source /opt/intel/bin/compilervars.sh intel64

autoload -U colors && colors

#PROMPT="${fg_red}%*${fg_white}${at_normal}.${fg_cyan}%~${fg_white}  ${bg_grey}
share|improve this question
Post the content of your .zshrc, and /etc/zsh/zshrc. – Gilles May 30 '12 at 1:24
See also superuser.com/questions/587288 . – JdeBP Jan 14 '15 at 15:42
up vote 3 down vote accepted

That's an lxterminal bug.

It doesn't show in other shells because zsh is nice enough to try and show you hidden characters showed by the previous command when you don't include a trailing newline before issuing a prompt.

If you type echo -n foo, you'll see foo%. The % indicates that there was no newline character. Above, what happens is that lxterminal outputs that ^T before running the shell.

In other shells, instead of ^T%\nprompt>, you see ^Tprompt.

Lxterminal has another bug BTW in that it ignores the value of $SHELL.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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