Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[SOLVED]Gentoo-Standard- ~/.bashrc
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

Goto page 1, 2  Next  
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
haukew
Tux's lil' helper
Tux's lil' helper


Joined: 01 Dec 2006
Posts: 135
Location: Hamburg - Germany

PostPosted: Wed Aug 22, 2007 5:05 pm    Post subject: [SOLVED]Gentoo-Standard- ~/.bashrc Reply with quote

Moin!
Durch eine Verkettung blöder Umstände ist mir meine bashrc abhanden gekommen - könnte vielleicht jemand die Gentoo-Standard-bashrc posten (besonders die Farbkodierung für root etc. finde ich allerliebst) :D

Gruß und danke im Voraus, Hauke
_________________
http://www.MySpace.com/TheAgeOfSound - my band :)


Last edited by haukew on Tue Sep 04, 2007 11:50 pm; edited 1 time in total
Back to top
View user's profile Send private message
manuels
Advocate
Advocate


Joined: 22 Nov 2003
Posts: 2146
Location: Europe

PostPosted: Wed Aug 22, 2007 5:08 pm    Post subject: Reply with quote

Moin,

schau mal in /etc/skel

Tschö mit ö
Manuel
_________________
Build your own live cd with catalyst 2.0!
Back to top
View user's profile Send private message
dek
l33t
l33t


Joined: 16 May 2002
Posts: 657
Location: Germany

PostPosted: Wed Aug 22, 2007 6:40 pm    Post subject: Reply with quote

Die Farben werden eigentlich in der /etc/bash/bashrc gesetzt (PS1).

Edit:
Macht die default .bashrc in /etc/skel überhaupt was?
Code:

if [[ $- != *i* ]] ; then
        # Shell is non-interactive.  Be done now!
        return
fi
Back to top
View user's profile Send private message
smg
Veteran
Veteran


Joined: 13 Aug 2004
Posts: 1402
Location: /home/stephan

PostPosted: Thu Aug 23, 2007 10:48 am    Post subject: Reply with quote

Klar, da steht ja noch mehr drin als das, oder? :)
_________________
GnuPG-Key-ID: 0xF8C275D4
Fingerprint: 5B6F 134A 189B A24D 342B 0961 8D4B 0230 F8C2 75D4
Code:
perl -WTe '($")=$/;print qq(@{[reverse('0'..'100')]}$/BOOM!$/);'
Back to top
View user's profile Send private message
dek
l33t
l33t


Joined: 16 May 2002
Posts: 657
Location: Germany

PostPosted: Thu Aug 23, 2007 11:31 am    Post subject: Reply with quote

smg wrote:
Klar, da steht ja noch mehr drin als das, oder? :)

Schon, aber der Rest sind halt nur Kommentare. :lol:
Back to top
View user's profile Send private message
smg
Veteran
Veteran


Joined: 13 Aug 2004
Posts: 1402
Location: /home/stephan

PostPosted: Thu Aug 23, 2007 12:04 pm    Post subject: Reply with quote

Code:
stephan@unimatrix ~ :) $ cat /etc/skel/.bashrc
# /etc/skel/.bashrc
#
# This file is sourced by all *interactive* bash shells on startup,
# including some apparently interactive shells such as scp and rcp
# that can't tolerate any output.  So make sure this doesn't display
# anything or bad things will happen !


# Test for an interactive shell.  There is no need to set anything
# past this point for scp and rcp, and it's important to refrain from
# outputting anything in those cases.
if [[ $- != *i* ]] ; then
   # Shell is non-interactive.  Be done now!
   return
fi

# Enable colors for ls, etc.  Prefer ~/.dir_colors #64489
if [[ -f ~/.dir_colors ]] ; then
   eval $(dircolors -b ~/.dir_colors)
elif [[ -f /etc/DIR_COLORS ]] ; then
   eval $(dircolors -b /etc/DIR_COLORS)
fi

alias ls='ls --color=auto'
alias grep='grep --colour=auto'

# Change the window title of X terminals
case ${TERM} in
   xterm*|rxvt*|Eterm|aterm|kterm|gnome)
      PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\007"'
      ;;
   screen)
      PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\033\\"'
      ;;
esac

_________________
GnuPG-Key-ID: 0xF8C275D4
Fingerprint: 5B6F 134A 189B A24D 342B 0961 8D4B 0230 F8C2 75D4
Code:
perl -WTe '($")=$/;print qq(@{[reverse('0'..'100')]}$/BOOM!$/);'
Back to top
View user's profile Send private message
dek
l33t
l33t


Joined: 16 May 2002
Posts: 657
Location: Germany

PostPosted: Thu Aug 23, 2007 12:31 pm    Post subject: Reply with quote

Code:

$ cat /etc/skel/.bashrc
# /etc/skel/.bashrc
#
# This file is sourced by all *interactive* bash shells on startup,
# including some apparently interactive shells such as scp and rcp
# that can't tolerate any output.  So make sure this doesn't display
# anything or bad things will happen !


# Test for an interactive shell.  There is no need to set anything
# past this point for scp and rcp, and it's important to refrain from
# outputting anything in those cases.
if [[ $- != *i* ]] ; then
        # Shell is non-interactive.  Be done now!
        return
fi


# Put your fun stuff here.

Oooook, einer von uns beiden hat eine veraltete Version. :)
Back to top
View user's profile Send private message
Max Steel
Advocate
Advocate


Joined: 12 Feb 2007
Posts: 2272
Location: My own world! I and Gentoo!

PostPosted: Thu Aug 23, 2007 12:44 pm    Post subject: Reply with quote

Falls ihr eine dritte Stimme braucht:
Code:
# /etc/skel/.bashrc
#
# This file is sourced by all *interactive* bash shells on startup,
# including some apparently interactive shells such as scp and rcp
# that can't tolerate any output.  So make sure this doesn't display
# anything or bad things will happen !


# Test for an interactive shell.  There is no need to set anything
# past this point for scp and rcp, and it's important to refrain from
# outputting anything in those cases.
if [[ $- != *i* ]] ; then
        # Shell is non-interactive.  Be done now!
        return
fi


# Put your fun stuff here.


Und die hier is in /home/user/
Code:
# /etc/skel/.bashrc:
#
# This file is sourced by all *interactive* bash shells on startup,
# including some apparently interactive shells such as scp and rcp
# that can't tolerate any output.  So make sure this doesn't display
# anything or bad things will happen !


# Test for an interactive shell.  There is no need to set anything
# past this point for scp and rcp, and it's important to refrain from
# outputting anything in those cases.
if [[ $- != *i* ]] ; then
        # Shell is non-interactive.  Be done now!
        return
fi

# Enable colors for ls, etc.  Prefer ~/.dir_colors #64489
if [[ -f ~/.dir_colors ]]; then
        eval `dircolors -b ~/.dir_colors`
else
        eval `dircolors -b /etc/DIR_COLORS`
fi

# Change the window title of X terminals
case ${TERM} in
        xterm*|rxvt*|Eterm|aterm|kterm|gnome)
                PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\007"'
                ;;
        screen)
                PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\033\\"'
                ;;
esac

shopt -s histappend
PROMPT_COMMAND='history -a'

_________________
mfg
Steel
___________________

Heim-PC: AMD Ryzen 5950X, 64GB RAM, GTX 1080
Laptop: Intel Core i5-4300U, 16GB RAM, Intel Graphic
Arbeit-PC: Intel i5-1145G7, 16GB RAM, Intel Iris Xe Graphic (leider WSL2)
Back to top
View user's profile Send private message
Polynomial-C
Retired Dev
Retired Dev


Joined: 01 Jun 2003
Posts: 1432
Location: Germany

PostPosted: Thu Aug 23, 2007 12:57 pm    Post subject: Reply with quote

Hi,

die aktuellste .bashrc findet man immer hier (vorausgesetzt, man hat keinen uralten portage-tree ;)): /usr/portage/app-shells/bash/files/dot-bashrc

Grüße
Poly-C
_________________
The manual said "Requires Windows10 or better" so I installed GNU/Linux...

my portage overlay

Need a stage1 tarball? (Unofficial builds)
Back to top
View user's profile Send private message
haukew
Tux's lil' helper
Tux's lil' helper


Joined: 01 Dec 2006
Posts: 135
Location: Hamburg - Germany

PostPosted: Tue Sep 04, 2007 11:50 pm    Post subject: Reply with quote

danke für Eure Antworten :)

Die "Verkettung blöder Umstände" war übrigens, dass ich mir zum Ausprobieren Arch installiert hatte (ohne natürlich ein Backup von Gentoo zu machen...)
Naja, hab's denn schnell wieder sein lassen und bin wieder zurück bei Mama Gentoo :)
_________________
http://www.MySpace.com/TheAgeOfSound - my band :)
Back to top
View user's profile Send private message
ok
Guru
Guru


Joined: 11 Jul 2006
Posts: 390
Location: germany

PostPosted: Wed Sep 05, 2007 4:30 pm    Post subject: Reply with quote

Code:
# Change the window title of X terminals
case ${TERM} in
        xterm*|rxvt*|Eterm|aterm|kterm|gnome)
                PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\007"'
                ;;
        screen)
                PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\033\\"'
                ;;
esac

Diese Zeilen haben mich mal ziemlich viel Zeit gekostet, als ich den Titel meines xterm-windows ändern wollte.
Dachte schon ich war so "blöd" die Zeilen auszuprobieren und wieder zu vergessen...

Aber ein PROMPT_COMMAND=... sollte meiner Meinung nach nicht als Standard in eine bashrc.
Back to top
View user's profile Send private message
mv
Watchman
Watchman


Joined: 20 Apr 2005
Posts: 6780

PostPosted: Wed Sep 05, 2007 5:25 pm    Post subject: Reply with quote

dek wrote:
Oooook, einer von uns beiden hat eine veraltete Version. :)

Vermutlich hast Du die neuere, da das meiste bereits in /etc/bash/bashrc enthalten ist und daher nicht "doppelt" auch noch in ~/.bashrc zu sein braucht - ist vor einiger Zeit als Bug gemeldet worden. @MaxSteel: Natürlich wird die ~/.bashrc bei einem Update nicht automatisch von /etc/skel übernommen.
Back to top
View user's profile Send private message
mv
Watchman
Watchman


Joined: 20 Apr 2005
Posts: 6780

PostPosted: Wed Sep 05, 2007 5:26 pm    Post subject: Reply with quote

ok wrote:
Aber ein PROMPT_COMMAND=... sollte meiner Meinung nach nicht als Standard in eine bashrc.

Zumal es ja ein PS1=$(...) ebenso tut ;)
Back to top
View user's profile Send private message
Necoro
Veteran
Veteran


Joined: 18 Dec 2005
Posts: 1912
Location: Germany

PostPosted: Wed Sep 05, 2007 6:10 pm    Post subject: Reply with quote

mv wrote:
ok wrote:
Aber ein PROMPT_COMMAND=... sollte meiner Meinung nach nicht als Standard in eine bashrc.

Zumal es ja ein PS1=$(...) ebenso tut ;)

Das ist nicht korrekt. Das PROMPT_COMMAND wird jedes mal neu ausgeführt. Bei PS1=$(...) wird der Befehl nur einmal ausgeführt (nämlich wenn die Variable belegt wird) - und erzielt damit nicht das korrekte ergebnis. (in dem Fall hier schon, wenn man die Prompt-Platzhalter (%h, %u, etc) benutzt)
_________________
Inter Deum Et Diabolum Semper Musica Est.
Back to top
View user's profile Send private message
mv
Watchman
Watchman


Joined: 20 Apr 2005
Posts: 6780

PostPosted: Wed Sep 05, 2007 7:41 pm    Post subject: Reply with quote

Necoro wrote:
mv wrote:
Zumal es ja ein PS1=$(...) ebenso tut ;)

Das ist nicht korrekt.

Ja, war ein Typo: Es hätte PS1='$(...)' heißen müssen.
Back to top
View user's profile Send private message
Necoro
Veteran
Veteran


Joined: 18 Dec 2005
Posts: 1912
Location: Germany

PostPosted: Wed Sep 05, 2007 9:09 pm    Post subject: Reply with quote

Ich sehe gerade - auch das wäre nicht das gleiche ...

PROMPT_COMMAND führt nur ein Kommando aus (das was dort gegeben ist ändert den Titel vom xterm). PS1 aber setzt den Prompt. Wenn du das dortige als '$(..)' fürs PS1 setzt, hast du keinen Prompt mehr ;)

mal ein Beispiel
Code:
necoro@Devoty ~ $ PROMPT_COMMAND="echo hallo"
hallo
necoro@Devoty ~ $ echo muh
muh
hallo
necoro@Devoty ~ $ cd ..
hallo
necoro@Devoty home $ unset PROMPT_COMMAND
necoro@Devoty home $ PS1='$(echo "hallo $PWD ")'
hallo /home cd necoro
hallo /home/necoro

_________________
Inter Deum Et Diabolum Semper Musica Est.
Back to top
View user's profile Send private message
ok
Guru
Guru


Joined: 11 Jul 2006
Posts: 390
Location: germany

PostPosted: Thu Sep 06, 2007 10:18 am    Post subject: Reply with quote

Code:
PS1='$(echo -ne "\033]0;Mein Titel\007")'$PS1
!
Back to top
View user's profile Send private message
mv
Watchman
Watchman


Joined: 20 Apr 2005
Posts: 6780

PostPosted: Thu Sep 06, 2007 3:53 pm    Post subject: Reply with quote

Damit's nicht langweilig wird, hier mal die von mir benutzte Funktion zum Setzen des Promptes - "set_prompt -h" zeigt die Optionen. Der Prompt zeigt Benutzer- und Rechnernamen und die Distribution (DISTRITEXT muss entsprechend gesetzt sein; um mit chroot richtig umgehen zu können, sollte die "originale" Distribution in DISTRITEXTSAVE stehen), wobei die jeweiligen Farben bei "root"/*www*/<500-Usern bzw. bei chroot bzw. mit ssh anders sind. Außerdem wird der aktuelle Pfadname angezeigt, der mit (andersfarbigen) "..." in der Mitte versehen wird, falls er zu lang ist.

Der Hauptvorteil, dabei nicht PROMPT_COMMAND zu benutzen, ist, dass man letzteres immer noch zur Verfügung hat, wenn man will.
Code:
ESCAPE=$'\e'
BLACK="${ESCAPE}[0;30m"
BLUE="${ESCAPE}[0;34m"
GREEN="${ESCAPE}[0;32m"
CYAN="${ESCAPE}[0;36m"
RED="${ESCAPE}[0;31m"
PURPLE="${ESCAPE}[0;35m"
BROWN="${ESCAPE}[0;33m"
LIGHT_GRAY="${ESCAPE}[0;37m"
DARK_GRAY="${ESCAPE}[1;30m"
LIGHTBLUE="${ESCAPE}[1;34m"
LIGHTGREEN="${ESCAPE}[1;32m"
LIGHTCYAN="${ESCAPE}[1;36m"
LIGHTRED="${ESCAPE}[1;31m"
LIGHTPURPLE="${ESCAPE}[1;35m"
YELLOW="${ESCAPE}[1;33m"
WHITE="${ESCAPE}[1;37m"
NORMCOL="${ESCAPE}[0m"

set_prompt() {
   local STATUS='' DISTRI='' SEP=':' PLAIN PLAINC DIR DIRC
   local STARTXSTATUS="${ESCAPE}]0;"
   local ENDXSTATUS=$'\007'
   local STARTSSTATUS="${ESCAPE}k"
   local ENDSSTATUS="${ESCAPE}"'\\'
   local C_USR='' C_AT='' C_HST='' C_DIR='' C_DT='' C_HSH='' C_SEP='' C_END=''
   local H_USR='' H_AT='' H_HST='' H_DIR='' H_DT='' H_HSH='' H_SEP='' H_END=''
   local C_EXT='' C_EXS=''
   local H_EXT='' H_EXS=''
   local EXT='' PEXT='' PCEXT='' DOTS PDOTS
   local COLOR=: SCREEN=: XTERM=: CUT=: ZSH=false EX=false
   local OPEN='\[' CLOSE='\]' EDIR='\w' EUSER='\u' EHST='\h' EPROMPT='\$'
   local D1 D2 D3 ARG
   local OPTIND=1
   while getopts 'CSXle?hH' ARG
   do   case "${ARG}" in
         C) COLOR=false;;
         S) SCREEN=false;;
         X) XTERM=false;;
         l) CUT=false;;
         e) EX=:;;
         *) echo "Usage: set_prompt [options]
 -C No colorized prompt
 -S No screen hardstatus
 -X No xterm hardstatus
 -l Long path (i.e. no path shortening)
 -e Extended prompt"
            return 1;;
      esac
   done
   if [ -n "${DISTRITEXT}" ]
   then   DISTRI="(${DISTRITEXT})"
      SEP="${DISTRI}"
   fi
   [ -z "${BASH}" ] && ZSH=:
   if ${ZSH}
   then   OPEN='%{'; CLOSE='%}'; EDIR='%~' EUSER='%n'; EHST='%m'
      EPROMPT='%(!.&.%%)'; ENDSSTATUS="${ESCAPE}"'\'
   fi
   if ${COLOR}
   then   [ -n "${UID}" ] || UID="$(id -u)"
      [ -n "${GID}" ] || GID="$(id -g)"
      C_AT="${CYAN}"
      C_HST="${GREEN}"
      C_DIR="${LIGHTGREEN}"
      C_DT="${BLUE}"
      C_HSH="${YELLOW}"
      C_SEP="${CYAN}"
      C_END="${NORMCOL}"
      C_EXT="${LIGHTRED}"
      C_EXS="${BROWN}"
      [ -n "${SSH_TTY}${SSH_CONNECTION}" ] && C_HST="${LIGHTRED}"
      [ "${DISTRITEXTSAVE}" != "${DISTRITEXT}" ] && C_SEP="${RED}"
      case "${USER}" in
         *www*) C_USR="${LIGHTBLUE}";;
         *)     C_USR="${BROWN}";;
      esac
      if [ "${UID}" -lt 500 ] || [ "${GID}" -lt 500 ]
      then   C_USR="${LIGHTCYAN}"
         C_HSH="${LIGHTRED}"
      fi
      [ -n "${C_USR}" ] && H_USR="${OPEN}${C_USR}${CLOSE}"
      [ -n "${C_AT}" ]  && H_AT="${OPEN}${C_AT}${CLOSE}"
      [ -n "${C_HST}" ] && H_HST="${OPEN}${C_HST}${CLOSE}"
      [ -n "${C_DIR}" ] && H_DIR="${OPEN}${C_DIR}${CLOSE}"
      [ -n "${C_DT}" ]  && H_DT="${OPEN}${C_DT}${CLOSE}"
      [ -n "${C_HSH}" ] && H_HSH="${OPEN}${C_HSH}${CLOSE}"
      [ -n "${C_SEP}" ] && H_SEP="${OPEN}${C_SEP}${CLOSE}"
      [ -n "${C_END}" ] && H_END="${OPEN}${C_END}${CLOSE}"
      [ -n "${C_EXT}" ] && H_EXT="${OPEN}${C_EXT}${CLOSE}"
      [ -n "${C_EXS}" ] && H_EXS="${OPEN}${C_EXS}${CLOSE}"
   fi
   if ${EX} && ${ZSH}
   then   PEXT='%(?..:%?)'
      PCEXT='%(?.. %?)'
      EXT="%(?..${H_EXS}(${H_EXT}%?${H_EXS}%))"
   fi
   if ${CUT}
   then   DIR='${D}'
      DIRC='${C}'
   else   DIR="${EDIR}"
      DIRC="${DIR}"
   fi
   PLAIN="${EUSER}@${EHST}${DISTRI} ${DIR}${PEXT}"
   PLAINC="${EUSER}@${EHST}${DISTRI}:${DIR}${PCEXT}"
   ${SCREEN} && case "${TERM}" in
      screen*) STATUS="${STARTSSTATUS}${PLAINC}${ENDSSTATUS}";;
   esac
   ${XTERM} && case "${TERM}" in
      xterm*|screen*) STATUS="${STATUS}${STARTXSTATUS}${PLAIN}${ENDXSTATUS}";;
   esac
   if [ -n "${STATUS}" ]
   then   PS1="${OPEN}${STATUS}${C_USR}${CLOSE}"
   else   PS1="${H_USR}"
   fi
   PS1="${PS1}${EUSER}${H_AT}@${H_HST}${EHST}${H_SEP}${SEP}${H_DIR}"
   PS1="${PS1}${DIRC}${EXT}${H_HSH}${EPROMPT} ${H_END}"
   if ${CUT}
   then   PDOTS='...'
      DOTS="${H_DT}${PDOTS}${H_DIR}"
      if ${ZSH}
      then   D1='D="$(print -P "%~")"'
         D2='"${D[0,8]}'
         D3='${D[${#D}-15,${#D}]}"'
      else   D1='D="${PWD#~}"; [ "${D}" = "${PWD}" ] || D="~${D}"'
         D2='${D:0:8}'
         D3='${D: -16}'
      fi
      D2='"${D/????????????????????????????*/'"${D2}"; D3="${D3}"'}"'
      PS1="\"${PS1}\""
      PS1="\$(${D1}; C=${D2}${DOTS}${D3}; D=${D2}${PDOTS}${D3}; echo ${PS1})"
   fi
}
if [ -n "${BASH}" ] && \
   [ "${BASH_VERSINFO[0]}" -eq 3 ]  && [ "${BASH_VERSINFO[1]}" -eq 1 ] && \
   [ "${BASH_VERSINFO[2]}" -le 17 ] && [ "${BASH_VERSINFO[3]}" -le 1 ]
then   set_prompt -l
   # Prompt expansion is buggy in these bash releases - example to test:
   #PS1='$(echo "Strange \[\e[0;32m\]Prompt\[\e[0m\] ")'
else   set_prompt
fi


Edit: Einige Bugfixes und (mittlerweile volle) zsh-Kompatibilität (s. Diskussion weiter unten). Für zsh ist zu beachten, dass
Code:
setopt prompt_subst
zu setzen ist, und dass das File mit der Funktion mit
Code:
bash_source() {
   emulate -L sh
   setopt kshglob noshglob braceexpand
   source "$@"
}

eingesourced werden sollte (so kann das selbe File für bash und zsh benutzt werden).


Last edited by mv on Tue Aug 17, 2010 6:54 pm; edited 8 times in total
Back to top
View user's profile Send private message
Necoro
Veteran
Veteran


Joined: 18 Dec 2005
Posts: 1912
Location: Germany

PostPosted: Thu Sep 06, 2007 4:42 pm    Post subject: Reply with quote

/me votes for Prompts in zsh ;)
_________________
Inter Deum Et Diabolum Semper Musica Est.
Back to top
View user's profile Send private message
mv
Watchman
Watchman


Joined: 20 Apr 2005
Posts: 6780

PostPosted: Fri Sep 14, 2007 8:08 pm    Post subject: Reply with quote

Necoro wrote:
/me votes for Prompts in zsh ;)

Bisher hat mich von anderen Shells grundsätzlich abgeschreckt, dass man sowieso eine bash im Speicher haben sollte, weil sehr vieles sie benutzt - also wieso Platz und (wiederholte) Ladezeit mit einer weiteren Shell verschwenden?
Im Zuge der Umstellung auf dash, mit der man halt doch schneller bootet, habe ich mir jetzt allerdings die zsh nochmal angeschaut:

Immerhin habe ich meine bash-startup-Files mit einigen Änderungen (zsh kennt z.B. kein [[ "$VARIABLE" ]] und kein ${VARIABLE:0:1}) jetzt auch unter der zsh zum Laufen gebracht; u.a. auch die obige Funktion, die ich jetzt entsprechend editiert habe.

Leider kann ich nicht bestätigen, dass zsh-Prompts bequemer sind: Ich fand keine Möglichkeit die obige Funktion für die zsh einfacher zu gestalten. Schlimmer noch, unter der zsh muss die Option -l zwangsobtruiert werden:
Das "Abschneiden" langer Namen scheint mit der zsh nicht machbar zu sein, weil ein PS1="$(...)" dort eben nur die Ausgabe $(...) ergibt und nicht ausgeführt wird; mit den Conditionals der zsh scheint man das nicht hinzukommen. Aber ich habe natürlich gerade erst angefangen, mir die zsh anzuschauen und lasse mich gerne eines besseren belehren...
Back to top
View user's profile Send private message
Necoro
Veteran
Veteran


Joined: 18 Dec 2005
Posts: 1912
Location: Germany

PostPosted: Fri Sep 14, 2007 10:15 pm    Post subject: Reply with quote

mv wrote:
Immerhin habe ich meine bash-startup-Files mit einigen Änderungen (zsh kennt z.B. kein [[ "$VARIABLE" ]] und kein ${VARIABLE:0:1}) jetzt auch unter der zsh zum Laufen gebracht

Das erste wäre im zsh stil: [[ -n "$VARIABLE" ]] --- für das zweite - keine Ahnung ;)

Ansonsten - zu deinen Problemen. Ich hab keine Ahnung ;) - hab mir dein PS1=$(...) funktions holocaust da oben aber auch net näher zu gemüte geführt ^^ ... - empfehle dir mal das hier: http://zsh.dotsrc.org/Guide/zshguide.html ...
Prinzipiell gilt: Die zsh hat für alles irgendwo eine Option - man muss sie nur finden ^^
_________________
Inter Deum Et Diabolum Semper Musica Est.
Back to top
View user's profile Send private message
mv
Watchman
Watchman


Joined: 20 Apr 2005
Posts: 6780

PostPosted: Sat Sep 15, 2007 12:25 pm    Post subject: Reply with quote

Necoro wrote:
mv wrote:
Immerhin habe ich meine bash-startup-Files mit einigen Änderungen (zsh kennt z.B. kein [[ "$VARIABLE" ]] und kein ${VARIABLE:0:1}) jetzt auch unter der zsh zum Laufen gebracht

Das erste wäre im zsh stil: [[ -n "$VARIABLE" ]] --- für das zweite - keine Ahnung ;)

Das herauszufinden, war nicht das Problem. Das Problem ist, dass die zsh das [[ $VARIABLE ]] auch im Kompatibilitätsmodus nicht schluckt, sondern Syntaxfehler bringt und das Einlesen/Ausführen der Files abbricht. Daher kann man die wirklich gute /etc/bash_completion sowie einige Files in /etc/bash_completion.d nicht ohne vorheriges Umschreiben einiger Stellen nutzen. Dies wiederum wird natürlich bei upgrades dieser Files Probleme machen. Und wer will schon eine Shell ohne vernünftig vordefinierte Completions nutzen, wenn man dies bei der Bash haben kann?
Quote:
hab mir dein PS1=$(...) funktions holocaust da oben aber auch net näher zu gemüte geführt. [...] Die zsh hat für alles irgendwo eine Option

Ja, ich sollte vielleicht mit Worten erklären, was das PS1-Problem so komplex macht:
Ziel ist es, sowohl den sichtbaren Prompt zu setzen als auch ggf. den Prompttext als "hardstatus"-line sowie als "xterm title" durchzureichen - ersteres mit verschiedenen Farben, die letzten beiden ohne Farben.
Als zusätzliches Schmankerl möchte ich mit PS1=$(...) dabei erreichen, dass lange Directorynamen gekürzt werden. Also anstelle von '/usr/share/doc/xf86-input-keyboard-1.1.1' soll im Prompt nur noch '/usr/sha...t-keyboard-1.1.1' erscheinen, wobei die '...' in einer anderen Farbe sein sollen (die Farben natürlich wieder nur im Prompt, nicht im durchgereichten "hardstatus"/"xterm title").
Wenn Du eine Möglichkeit siehst, das in zsh zu machen...
Back to top
View user's profile Send private message
Necoro
Veteran
Veteran


Joined: 18 Dec 2005
Posts: 1912
Location: Germany

PostPosted: Sat Sep 15, 2007 6:18 pm    Post subject: Reply with quote

mv wrote:
Daher kann man die wirklich gute /etc/bash_completion sowie einige Files in /etc/bash_completion.d nicht ohne vorheriges Umschreiben einiger Stellen nutzen. Dies wiederum wird natürlich bei upgrades dieser Files Probleme machen. Und wer will schon eine Shell ohne vernünftig vordefinierte Completions nutzen, wenn man dies bei der Bash haben kann?

Ich kenn die Completions bei der Bash nicht - aber ich weiß, dass ich damals zur zsh gewechselt bin, weil es gerade dort welche gibt :) -- tipp: ignorier die bashcompletion und nimm die von zsh -->
emerge -av zsh-completion <--- das bringt dir completion für "equery", "emerge" etc
und in deine ~/.zshrc schreibst du
Code:
autoload -U compinit
compinit


Zu deinem PS1 Problem -> man zshmisc -Sektion "PROMPT EXPANSION" (ist die letzte in der Page)
_________________
Inter Deum Et Diabolum Semper Musica Est.
Back to top
View user's profile Send private message
mv
Watchman
Watchman


Joined: 20 Apr 2005
Posts: 6780

PostPosted: Sat Sep 15, 2007 7:50 pm    Post subject: Reply with quote

Necoro wrote:
mv wrote:
Und wer will schon eine Shell ohne vernünftig vordefinierte Completions nutzen, wenn man dies bei der Bash haben kann?

Ich kenn die Completions bei der Bash nicht - aber ich weiß, dass ich damals zur zsh gewechselt bin, weil es gerade dort welche gibt :) -- tipp: ignorier die bashcompletion und nimm die von zsh -->
emerge -av zsh-completion <--- das bringt dir completion für "equery", "emerge" etc

Ich sprach von vordefinierten completions. Die zsh-completion hat halt nur ein paar für die Gentoo-Utilities, während app-shells/bash-completion Completions für hunderte von Kommandos hat und z.B. die Optionen und Extensions für spezielle Programme wie mplayer immer wieder aktualisiert werden. Das möchte ich wirklich nicht von Hand für jedes Programm in der zsh nachbauen und ständig aktualisieren. Klar, das erste, was ich in zshrc gemacht hatte, war (in Abwandlung einer FAQ)
Code:
bash_source() {
  emulate -L sh
  local -a BASH_VERSINFO
  BASH_VERSINFO=( 3 2 17 1 release )
  alias shopt=':'
  alias readonly=':'
  alias _expand=_bash_expand
  alias _complete=_bash_comp
  have(){}
  alias have=zsh_have
  setopt kshglob noshglob braceexpand
  source "$@"
}
zsh_have() {
  unset have
  (( ${+commands[$1]} )) && have=yes
}
alias have=zsh_have
autoload -U compinit bashcompinit
compinit -D
bash_source /etc/bash_completion

aber leider führt der [[ $VARIABLE ]]-Ärger dazu, dass bash_completion nicht richtig abgearbeitet wird und nur Murks definiert wird, wenn man die entsprechenden Zeilen nicht patcht.
Quote:
Zu deinem PS1 Problem -> man zshmisc -Sektion "PROMPT EXPANSION" (ist die letzte in der Page)

Das hatte ich mir schon angeschaut, aber leider kann man beim "Kürzen" eben nur einen konstanten String angeben - jedes "%" im "Ersetzungsstring" wird als solches gedruckt statt interpretiert. Dadurch kann man die Filenamen nur an einer Seite kürzen (nicht in der Mitte, wie ich es gerne hätte), und man kann keine Farb-Escape-Sequenzen benutzen, weil sonst die Promptlänge durcheinander käme. Ich habe diese Notlösung jetzt mal im obigen Code eingebaut, aber richtig glücklich bin ich damit nicht.
Back to top
View user's profile Send private message
Necoro
Veteran
Veteran


Joined: 18 Dec 2005
Posts: 1912
Location: Germany

PostPosted: Sat Sep 15, 2007 8:03 pm    Post subject: Reply with quote

mv wrote:
Ich sprach von vordefinierten completions. Die zsh-completion hat halt nur ein paar für die Gentoo-Utilities, während app-shells/bash-completion Completions für hunderte von Kommandos hat und z.B. die Optionen und Extensions für spezielle Programme wie mplayer immer wieder aktualisiert werden. Das möchte ich wirklich nicht von Hand für jedes Programm in der zsh nachbauen und ständig aktualisieren. Klar, das erste, was ich in zshrc gemacht hatte, war (in Abwandlung einer FAQ)

Sorry -- aber bevor du hier schwachsinn erzählst: Im Paket "zsh-completion" sind wirklich nur die für emerge, equery etc. drin --- die anderen sind standardmäßig vorhanden *kopfschüttel* -- erst ausprobieren - denn Reden
_________________
Inter Deum Et Diabolum Semper Musica Est.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum