On 10/29/15, 4:00 PM, Greg Wooledge wrote:
Do you have a PROMPT_COMMAND variable? Or something unusual in your
PS1 variable? (Doesn't look it from the copy/paste, but you never
know.) Or do you have a DEBUG trap?
Oh yeah, I definitely make extensive use of the PROMPT_COMMAND; that's
how I stick the `date` in there. [See below...]
I can see how that could result in, shall we say, "asynchronous"
activity, but it's still a little astonishing that it would update '~'
--- especially without updating $HOME at the same time.
PS: This was cobbled together a long time ago, so try not to laugh TOO
hard at the mix of old-school "/bin/sh"-isms... ;-)
# (grep -c)
function gc {
local line arg="$1" counter=0
while read line; do
[ "$line" != "${line##*$arg}" ] && counter=$(($counter+1))
done
echo $counter
}
export WHOAMI="`whoami`"
export TTY="`tty 2>/dev/null`"
if [ ! "$TTY" = "" ]; then
export TTY_OWNER="`ls -Ll \"$TTY\" 2>/dev/null | awk '{print \$3}'`"
fij
if [ "$PS1" != "" ]; then
PROMPT_COMMAND='set_prompt'
function set_prompt () {
local numjobs=`jobs | gc Stopped`
if [ "$numjobs" = 0 ]; then
unset JOBFLAG
else
JOBFLAG="{$numjobs} "
fi
if [ "$WHOAMI" = root ]; then
prompt="# "
other=" (#)"
color="^[[31;1m"
else
prompt="> "
if [ ! "$WHOAMI" = "$TTY_OWNER" ]; then
other=" ($WHOAMI)"
color="^[[36;1m"
else
other=""
color="^[[0;1m"
fi
fi
PS1=
[ ! "$STY" = "" ] && PS1="[$STY] "
# ^[]1 = iTerm.app "tab"
# ^[]2 = konsole "tab" and taskbar app name
# ^[]30 = I forget...
if [ ! "${TERM##xterm}" = "$TERM" ] || [ ! "${TERM##screen}" =
"$TERM" ]; then
local datestr=$(date +"%a %b %d %T")
local standout_on=$(tput smso)
local standout_off=$(tput rmso)
PS1="\[^[]2;$JOBFLAG\u@\h
\W^G^[]1;\h$other^G^[]30;\h$other^G$color$standout_on\]$datestr\[$standout_off\]
$JOBFLAG${PS1}\u@\h:\w${prompt}\[^[[0m\]"
else
PS1="\[$color$standout_on\]$datestr\[$standout_off\]
$JOBFLAG${PS1}\u@\h:\w${prompt}\[^[[0m\]"
fi
echo -n $(tput cup $(tput lines) 0)
}
fi
--
:- Dabe