Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index International Gentoo Users Deutsches Forum (German)
  • Search

[SOLVED]Gentoo-Standard- ~/.bashrc

Support-Forum
Diskussionen rund um Installation, Betrieb und Anpassungen von Gentoo und dessen Paketen sowie dabei auftretenden (technischen) Problemen.
Deutsches Portal: www.gentoo.de
Post Reply
  • Print view
Advanced search
28 posts
  • 1
  • 2
  • Next
Author
Message
haukew
Tux's lil' helper
Tux's lil' helper
User avatar
Posts: 135
Joined: Fri Dec 01, 2006 7:05 am
Location: Hamburg - Germany
Contact:
Contact haukew
Website

[SOLVED]Gentoo-Standard- ~/.bashrc

  • Quote

Post by haukew » Wed Aug 22, 2007 5:05 pm

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
Last edited by haukew on Tue Sep 04, 2007 11:50 pm, edited 1 time in total.
http://www.MySpace.com/TheAgeOfSound - my band :)
Top
manuels
Advocate
Advocate
User avatar
Posts: 2146
Joined: Sat Nov 22, 2003 5:50 pm
Location: Europe

  • Quote

Post by manuels » Wed Aug 22, 2007 5:08 pm

Moin,

schau mal in /etc/skel

Tschö mit ö
Manuel
Build your own live cd with catalyst 2.0!
Top
dek
l33t
l33t
User avatar
Posts: 657
Joined: Thu May 16, 2002 8:34 pm
Location: Germany
Contact:
Contact dek
Website

  • Quote

Post by dek » Wed Aug 22, 2007 6:40 pm

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

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

Code: Select all

if [[ $- != *i* ]] ; then
        # Shell is non-interactive.  Be done now!
        return
fi
Top
smg
Veteran
Veteran
User avatar
Posts: 1402
Joined: Fri Aug 13, 2004 8:00 pm
Location: /home/stephan

  • Quote

Post by smg » Thu Aug 23, 2007 10:48 am

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: Select all

perl -WTe '($")=$/;print qq(@{[reverse('0'..'100')]}$/BOOM!$/);'
Top
dek
l33t
l33t
User avatar
Posts: 657
Joined: Thu May 16, 2002 8:34 pm
Location: Germany
Contact:
Contact dek
Website

  • Quote

Post by dek » Thu Aug 23, 2007 11:31 am

smg wrote:Klar, da steht ja noch mehr drin als das, oder? :)
Schon, aber der Rest sind halt nur Kommentare. :lol:
Top
smg
Veteran
Veteran
User avatar
Posts: 1402
Joined: Fri Aug 13, 2004 8:00 pm
Location: /home/stephan

  • Quote

Post by smg » Thu Aug 23, 2007 12:04 pm

Code: Select all

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: Select all

perl -WTe '($")=$/;print qq(@{[reverse('0'..'100')]}$/BOOM!$/);'
Top
dek
l33t
l33t
User avatar
Posts: 657
Joined: Thu May 16, 2002 8:34 pm
Location: Germany
Contact:
Contact dek
Website

  • Quote

Post by dek » Thu Aug 23, 2007 12:31 pm

Code: Select all

$ 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. :)
Top
Max Steel
Advocate
Advocate
User avatar
Posts: 2324
Joined: Mon Feb 12, 2007 6:35 pm
Location: My own world! I and Gentoo!

  • Quote

Post by Max Steel » Thu Aug 23, 2007 12:44 pm

Falls ihr eine dritte Stimme braucht:

Code: Select all

# /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: Select all

# /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 9 5950X, 64GB RAM, RX 9070 XT
Laptop: AMD Ryzen 5 7640U, 32GB RAM, Radeon onCPU Graphics
Arbeit-PC: AMD Ryzen 3 Pro 7335U, 16GB RAM, AMD Radeon Graphics (leider WSL2)
Top
Polynomial-C
Retired Dev
Retired Dev
User avatar
Posts: 1432
Joined: Sun Jun 01, 2003 4:19 pm
Location: Germany

  • Quote

Post by Polynomial-C » Thu Aug 23, 2007 12:57 pm

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)
Top
haukew
Tux's lil' helper
Tux's lil' helper
User avatar
Posts: 135
Joined: Fri Dec 01, 2006 7:05 am
Location: Hamburg - Germany
Contact:
Contact haukew
Website

  • Quote

Post by haukew » Tue Sep 04, 2007 11:50 pm

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 :)
Top
ok
Guru
Guru
User avatar
Posts: 390
Joined: Tue Jul 11, 2006 8:24 pm
Location: germany

  • Quote

Post by ok » Wed Sep 05, 2007 4:30 pm

Code: Select all

# 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.
Top
mv
Watchman
Watchman
User avatar
Posts: 6795
Joined: Wed Apr 20, 2005 12:12 pm

  • Quote

Post by mv » Wed Sep 05, 2007 5:25 pm

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.
Top
mv
Watchman
Watchman
User avatar
Posts: 6795
Joined: Wed Apr 20, 2005 12:12 pm

  • Quote

Post by mv » Wed Sep 05, 2007 5:26 pm

ok wrote:Aber ein PROMPT_COMMAND=... sollte meiner Meinung nach nicht als Standard in eine bashrc.
Zumal es ja ein PS1=$(...) ebenso tut ;)
Top
Necoro
Veteran
Veteran
User avatar
Posts: 1912
Joined: Sun Dec 18, 2005 3:57 pm
Location: Germany

  • Quote

Post by Necoro » Wed Sep 05, 2007 6:10 pm

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.
Top
mv
Watchman
Watchman
User avatar
Posts: 6795
Joined: Wed Apr 20, 2005 12:12 pm

  • Quote

Post by mv » Wed Sep 05, 2007 7:41 pm

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.
Top
Necoro
Veteran
Veteran
User avatar
Posts: 1912
Joined: Sun Dec 18, 2005 3:57 pm
Location: Germany

  • Quote

Post by Necoro » Wed Sep 05, 2007 9:09 pm

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: Select all

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.
Top
ok
Guru
Guru
User avatar
Posts: 390
Joined: Tue Jul 11, 2006 8:24 pm
Location: germany

  • Quote

Post by ok » Thu Sep 06, 2007 10:18 am

Code: Select all

PS1='$(echo -ne "\033]0;Mein Titel\007")'$PS1
!
Top
mv
Watchman
Watchman
User avatar
Posts: 6795
Joined: Wed Apr 20, 2005 12:12 pm

  • Quote

Post by mv » Thu Sep 06, 2007 3:53 pm

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: Select all

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: Select all

setopt prompt_subst
zu setzen ist, und dass das File mit der Funktion mit

Code: Select all

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.
Top
Necoro
Veteran
Veteran
User avatar
Posts: 1912
Joined: Sun Dec 18, 2005 3:57 pm
Location: Germany

  • Quote

Post by Necoro » Thu Sep 06, 2007 4:42 pm

/me votes for Prompts in zsh ;)
Inter Deum Et Diabolum Semper Musica Est.
Top
mv
Watchman
Watchman
User avatar
Posts: 6795
Joined: Wed Apr 20, 2005 12:12 pm

  • Quote

Post by mv » Fri Sep 14, 2007 8:08 pm

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...
Top
Necoro
Veteran
Veteran
User avatar
Posts: 1912
Joined: Sun Dec 18, 2005 3:57 pm
Location: Germany

  • Quote

Post by Necoro » Fri Sep 14, 2007 10:15 pm

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.
Top
mv
Watchman
Watchman
User avatar
Posts: 6795
Joined: Wed Apr 20, 2005 12:12 pm

  • Quote

Post by mv » Sat Sep 15, 2007 12:25 pm

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?
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...
Top
Necoro
Veteran
Veteran
User avatar
Posts: 1912
Joined: Sun Dec 18, 2005 3:57 pm
Location: Germany

  • Quote

Post by Necoro » Sat Sep 15, 2007 6:18 pm

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: Select all

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.
Top
mv
Watchman
Watchman
User avatar
Posts: 6795
Joined: Wed Apr 20, 2005 12:12 pm

  • Quote

Post by mv » Sat Sep 15, 2007 7:50 pm

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: Select all

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.
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.
Top
Necoro
Veteran
Veteran
User avatar
Posts: 1912
Joined: Sun Dec 18, 2005 3:57 pm
Location: Germany

  • Quote

Post by Necoro » Sat Sep 15, 2007 8:03 pm

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.
Top
Post Reply
  • Print view

28 posts
  • 1
  • 2
  • Next

Return to “Deutsches Forum (German)”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy

 

 

magic