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