Hallo LUG,
nach dem Vortrag gestern habe ich mal wieder eines meiner "Probelmscripte" herausgesucht.
-----cut /etc/profile.d/alias.sh (geladen über /etc/profile)-------
# The Semantic is : # If exist a ~/.alias and the user hasn't specified a # LOAD_SYSTEM_ALIAS variables then don't do any system aliases # If there is no ~/.alias but the user has specified a # IGNORE_SYSTEM_ALIASES then don't do any system aliases.
[[ -f ~/.alias ]] && [[ -z $LOAD_SYSTEM_ALIASES ]] && return 0 [[ -n $IGNORE_SYSTEM_ALIASES ]] && return 0
... (weitere Befehle und aliase) alias ll="ls -l" etc. -----cut-------
Meiner Überlegung wird folgendes gemacht: 1.) geprüft, ob Datei .alias im $HOME vorhanden und lesbar, 2.) die Länge der Zeichenfolge LOAD_SYSTEM_ALIASES gleich Null (0 oder NULL?; vermute 0) ist 3.) das Script mit Rückmeldung 0 verlassen (ohne Fehler)
1.) Zeichenfolge IGNORE_SYSTEM_ALIASES ungleich Null (0 oder NULL?; vermute 0) ist 2.) das Script mit Rückmeldung 0 verlassen (ohne Fehler)
Was muss ich nun in die ~/.bashrc bzw. ~/.profile hineinschreiben, um zusätzlich meine eigene ~/.alias nutzen zu können? Ich vermute mal was mit export. export LOAD_SYSTEM_ALIASES klappte auf jeden Fall nicht :-)
Ich hatte das Script schon einmal abgeändert und geschrieben:
if [ -f ~/.alias ]; then . ~/.alias fi
Somit konnte ich wenigstens die Datei nutzen.
Tschau,
Falk
Nachtrag: Das TMOUT auf der Kommandozeile ging bei mir nicht. Meldung:
[falk@Voyager falk]$ TMOUT=3 bash: TMOUT: readonly variable
Wie geht den das? (Variable nur read-only)
On Thu, 15 Apr 2004 15:42:35 +0000 Falk Döring falk.doering@web.de wrote:
Hallo LUG,
nach dem Vortrag gestern habe ich mal wieder eines meiner "Probelmscripte" herausgesucht.
-----cut /etc/profile.d/alias.sh (geladen über /etc/profile)-------
# The Semantic is : # If exist a ~/.alias and the user hasn't specified a # LOAD_SYSTEM_ALIAS variables then don't do any system aliases # If there is no ~/.alias but the user has specified a # IGNORE_SYSTEM_ALIASES then don't do any system aliases.
[[ -f ~/.alias ]] && [[ -z $LOAD_SYSTEM_ALIASES ]] && return 0 [[ -n $IGNORE_SYSTEM_ALIASES ]] && return 0
s/return/exit/
return ist für Funktionen.
Falk Döring:
Hallo LUG,
nach dem Vortrag gestern habe ich mal wieder eines meiner "Probelmscripte" herausgesucht.
-----cut /etc/profile.d/alias.sh (geladen über /etc/profile)-------
# The Semantic is : # If exist a ~/.alias and the user hasn't specified a # LOAD_SYSTEM_ALIAS variables then don't do any system aliases # If there is no ~/.alias but the user has specified a # IGNORE_SYSTEM_ALIASES then don't do any system aliases.
[[ -f ~/.alias ]] && [[ -z $LOAD_SYSTEM_ALIASES ]] && return 0 [[ -n $IGNORE_SYSTEM_ALIASES ]] && return 0
Wieso doppelte "["?
Freundlich grüßend,
Erik
Hi Falk,
On Thu, Apr 15, 2004 at 15:42:35 +0000, Falk Doering wrote:
-----cut /etc/profile.d/alias.sh (geladen ?ber /etc/profile)------- # The Semantic is : # If exist a ~/.alias and the user hasn't specified a # LOAD_SYSTEM_ALIAS variables then don't do any system aliases # If there is no ~/.alias but the user has specified a # IGNORE_SYSTEM_ALIASES then don't do any system aliases.
[[ -f ~/.alias ]] && [[ -z $LOAD_SYSTEM_ALIASES ]] && return 0 [[ -n $IGNORE_SYSTEM_ALIASES ]] && return 0
Meiner Ueberlegung wird folgendes gemacht: 1.) gepr?ft, ob Datei .alias im $HOME vorhanden und lesbar,
[ -f dateiname ] ueberprueft nur, ob dateiname eine regulaere Datei (also kein Verzeichnis, kein Symlink...) ist. Ueber die Leseberechtigung wird damit keine Aussage gemacht. (vgl. help test)
Die Schreibweise [[ ... ]] ist eine bash-Spezialitaet, die ausser dem normalen Vergleichsoperator "=" zusaetzlich "==" bietet. Damit werden beim Vergleich Shell Patters ausgewertet.
2.) die L?nge der Zeichenfolge LOAD_SYSTEM_ALIASES gleich Null (0 oder NULL?; vermute 0) ist
[ -z $LOAD_SYSTEM_ALIASES ] ueberprueft, ob die Variable LOAD_SYSTEM_ALIASES leer ist. Die Sache endet aber in einem Syntaxfehler, wenn LOAD_SYSTEM_ALIASES tatsaechlich leer ist, weil das Konstrukt [ -z ] nicht zulaessig ist. Richtig muss es heissen: [ -z "$LOAD_SYSTEM_ALIASES" ]
3.) das Script mit R?ckmeldung 0 verlassen (ohne Fehler)
Wenn tatsaechlich das ganze Skript verlassen werden soll, musst dort exit 0 stehen. Mit return 0 wird nur eine Unterfunktion verlassen.
1.) Zeichenfolge IGNORE_SYSTEM_ALIASES ungleich Null (0 oder NULL?; vermute 0)
Auch hier verraet ein Blick in "help test", dass [ -n "$VAR" ] prueft, ob VAR nicht leer ist. Auch hier muss die Variable in Doublequotes stehen.
Was muss ich nun in die ~/.bashrc bzw. ~/.profile hineinschreiben, um zus?tzlich meine eigene ~/.alias nutzen zu k?nnen? Ich vermute mal was mit export. export LOAD_SYSTEM_ALIASES klappte auf jeden Fall nicht :-)
export IGNORE_SYSTEM_ALIASES=1 (die 1 ist willkuerlich, hauptsache die Variable ist nicht leer)
Ich hatte das Script schon einmal abge?ndert und geschrieben:
if [ -f ~/.alias ]; then . ~/.alias fi
Ja, sowas gehoert da auch rein. Wenn Du wissen willst, unter welchen Bedingungen welche Datei (.bashrc, .profile, .bash_profile, ...) von der bash eingelesen wird, lies in der bash-Manpage den Abschnitt INVOCATION.
Nachtrag: Das TMOUT auf der Kommandozeile ging bei mir nicht. Meldung:
[falk@Voyager falk]$ TMOUT=3 bash: TMOUT: readonly variable
Wie geht den das? (Variable nur read-only)
In einer uebergeordneten Shell oder einem rc-Skript wurde die Variable wahrscheinlich mit declare auf read-only gesetzt. (help declare)
bye, Chris
lug-dd@mailman.schlittermann.de