[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[Debian]:bash: [ in $PS1: root <-> user



Hallo,

beim Rumprobieren mit dem Bash-Prompt (PS1) habe ich ein merkwürdiges
Phänomen entdeckt, das ich gern verstehen würde ...

Der Wert von $PS1 ist für root und normale user identisch:

$LOGNAME@\h:1 $PWD`[ \$(( \$( date '+%S' | sed s/^0// ) )) -lt 6 ] && echo -n " " && date '+%H:%M'` \$

Im Klartext:  PS1 = user@host:tty aktuelles_verzeichnis evtl._uhrzeit $_oder_# 
evtl._uhrzeit := Zeige Uhrzeit an, wenn aktuelle Sekunde im Intervall 0..5 .

Für einen normalen User funktioniert das einwandfrei, für root seltsamer-
weise nicht, obwohl $PS1 für beide identisch ist. root bekommt als Prompt
folgende Fehlermeldung:

  bash: [: missing `]'

Weiß jemand, warum eine root-bash [ aka test(1) in $PS1 anderes inter-
pretiert als eine user-bash?


In /etc/passwd ist sowohl für root als auch für normale User /bin/bash
eingetragen. /bin/sh ist ein Symlink auf /bin/bash.

$PATH für root ist: /root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11/bin

$PATH für user ist: /home/frs/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games

### /etc/profile #############################################################

PS1="\$LOGNAME@\h"
PS1=$PS1:$( tty | sed s/"\/dev\/tty"// )
PS1="$PS1 \$PWD"

# if sec < 6 then print current time
# Sieht gefährlich aus, aber funktioniert. :-)

PS1="$PS1\`[ \\\$(( \\\$( date '+%S' | sed s/^0// ) )) -lt  6 ] && echo -n \" \" && date '+%H:%M'\`"
#                   $(--- cmd --------------------)
#            $((--- eval ---------------------------))
#          [--- test condition -------------------------------]    ^-- then cmd ----------------^
#         `----- cmd -----------------------------------------------------------------------------`

PS1="$PS1 \\$ "
export PS1

<EOF>


TIA, Frank

-- 
Es ist einfacher, eine Shell zu portieren, als ein Shellskript.
	-- Larry Wall
------------------------------------------------
Um sich aus der Liste auszutragen schicken Sie
bitte eine E-Mail an majordomo@jfl.de die im Body
"unsubscribe debian-user-de <deine emailadresse>"
enthaelt.
Bei Problemen bitte eine Mail an: Jan.Otto@jfl.de
------------------------------------------------
Anzahl der eingetragenen Mitglieder:     735


Reply to: