![](https://seccdn.libravatar.org/avatar/7b33cb1e776e35b87edb8ef09f0c888f.jpg?s=120&d=mm&r=g)
Hallo, Am Tue, 27 Apr 2004, Marcus Habermehl schrieb:
Am Di, 2004-04-27 um 19.38 schrieb David Haller:
Am Tue, 27 Apr 2004, Marcus Habermehl schrieb:
Am Mo, 2004-04-26 um 21.13 schrieb David Haller:
Am Mon, 26 Apr 2004, Marcus Habermehl schrieb:
Vielleicht sollte ich doch wieder anfangen, die Dateien _komplett_ durch zugucken und nicht mit grep arbeiten. :-(
grep -10 PATH /etc/profile
Äh, funktioniert bei mir nicht. Wenn das eine Variante von
grep -C 10 PATH /etc/profile
sein soll, dann funktioniert beides nicht. Außer ich verstehe den Hilfe-Text falsch.
-B, --before-context=NUM print NUM lines of leading context -A, --after-context=NUM print NUM lines of trailing context -NUM same as both -B NUM and -A NUM -C, --context same as -2
Noch Fragen?
Ja. Übersetzt mir das bitte mal in ein verständliches Deutsch. Ich habe die deutsche Ausgabe schon nicht verstanden. Bzw. was ist mit Kontext gemeint? Fünf Zeilen davor und danach?
Aber gern: -B NUMMER, --before-context=NUMMER gebe NUMMER Zeilen vor jeder Fundstelle aus -A NUMMER, --after-context=NUMMER gebe NUMMER Zeilen vor jeder Fundstelle aus -NUMMER wie -A NUMMER und -B NUMMER zusammen -C, --context wie -2, also wie -A 2 -B 2 also "gebe je 2 Zeilen _vor_ und _nach_ jeder Fundstelle aus. Sich ueberschneidender Kontext / Zusammenhang wird dabei zusammengefasst, so dass keine doppelten Zeilen ausgegeben werden. Am Beispiel wird das ganze (wie so oft) dann leichter verstaendlich (aus Platzgruenden bringe ich die "Zeilen" hier per "| xargs echo" auf eine Zeile, durch Leerzeichen getrennt): dh@slarty$ STR="`seq 1 10`"; echo "$STR" 1 2 : 10 dh@slarty$ echo "$STR" | grep -B1 5 | xargs echo 4 5 dh@slarty$ echo "$STR" | grep -A1 5 | xargs echo 5 6 dh@slarty$ echo "$STR" | grep -B1 -A1 5 | xargs echo 4 5 6 dh@slarty$ echo "$STR" | grep -1 5 | xargs echo 4 5 6 dh@slarty$ echo "$STR" | grep -B2 -A2 5 | xargs echo 3 4 5 6 7 dh@slarty$ echo "$STR" | grep -2 5 | xargs echo 3 4 5 6 7 dh@slarty$ echo "$STR" | grep -C 5 | xargs echo 3 4 5 6 7 dh@slarty$ echo "$STR" | grep -3 5 | xargs echo 2 3 4 5 6 7 8 dh@slarty$ echo "$STR" | grep -B1 -A5 5 | xargs echo 4 5 6 7 8 9 10 Immer noch Fragen?
==== Alternativ ==== cat <<'EOF' >> /etc/profile.local
PATH="$PATH:/mein/neuer/pfad/bin" export PATH EOF ==== [..] Gut, man könnte bei der Umleitung ein > vergessen und schon hätte man ein Problem.
Das Problem hat man auch beim echo und (leicht anders) beim sed.
Ich habe es so gelöst:
mv /etc/profile /etc/profile.tmp cat /etc/profile.tmp | sed '/openwin/ a\ /opt/xfce4/bin \\' > /etc/profile rm /etc/bash.bashrc.tmp /etc/profile.tmp
Schlecht. Dazu ist doch gerade die profile.local da.
Ich muss zugeben, dass ich auf meinen Systemen nur einmal eine /etc/profile.local gesehen habe. Aber welche Distri das jetzt war, kann ich nicht mehr sagen.
Hier auf meiner SuSE 9.0 ist die Datei nicht vorhanden. Deshalb habe ich auch immer nur direkt mit der /etc/profile gearbeitet.
*hrmpf* /etc/profile.local gibt's IIRC seit mindestens SuSE 5.3. dh@slarty$ grep '\.local' /etc/profile test -e /etc/profile.local && . /etc/profile.local (und das ist auf meiner SuSE 6.2). Und das gibt's auch bei der SuSE 9.1 noch. AFAIK verwenden die meisten Distributionen sowas. Vgl. /etc/ppp/ip-{up,down}.local.
Ich finde diese .local immer verwirrend. Für mich heißt das immer so viel, wie "nur auf dem Rechner".
Jo mei, ist /etc/profile denn nicht auch Rechnerspezifisch?
Daher ergeben diesen Dateien auch keinen Sinn für mich. Auch wenn ich weiß, dass das .local anders gemeint ist. Will mir aber nicht in die Birne.
Die .local sind fuer eigene Anpassungen. Denn die /etc/profile wird u.U. von Yast / SuSEconfig, spaetestens aber beim naechsten Update ueberschrieben. Durch den Mechanismus der profile.local, die von profile gesourced wird, kann man seine eigenen Aenderungen "konsistent" pflegen, ohne das sich die Distri bzw. deren Tools daran vergreifen wird. Denk dir einfach die ".local" als "nicht von der Distri". Und ja, ueblicherweise muss man die .local Dateien selber anlegen.
Kann man die /etc/profile.local, bzw. alle .local unter allen Distris verwenden? Oder müssen die vorher irgendwo definiert werden?
s.o. Es ist ein AFAIK ueblicher Mechanismus, der AFAIK inzwischen auch im LSB festgehalten ist. -dnh -- If you haven't got time to RTFM, you haven't got time to whine on this mailing list.