Uwe Diederich schrieb:
Ingo Freund wrote:
On 02.05.2008 13:11, Uwe Diederich wrote (please find the answer below the original text):
Hallo Liste,
Ich habe hier folgendes Problem:
In einem bash-Script solle eine Datei via . pfad/datei integriert werden. "datei" wertet eine weitere Datei aus, deren Standort relative zu "pfad" liegt. Wie kann ich in "datei" "pfad" ermitteln?
Vielen Dank für Eure Mühe.
Mit freundlichen Grüßen
Uwe Diederich
wenn pfad und datei gegeben sind (also vielleicht als 1. Übergabeparameter) dann kriegst die mit dem Befehl $ dirname $1 das Verzeichnis heraus und mit $ basename $1 den Dateinamen
also z.B. gegeben sei der Aufruf:
$ script "/usr/local/conf/firewall"
dann erhältst du bei Auswertung im script mit: dirname $1 /usr/local/conf und mit basename $1 firewall
Um in deinem Beispiel zu bleiben: In dem script "/usr/local/conf/firewall" befinden sich an irgend einer Stelle folgende Zeile:
[...] . /ich/weiss/wo/ich/bin/grenze.hier [...]
Innerhalb der Datei /ich/weiss/wo/ich/bin/grenze.hier will ich der Pfad (/ich/weiss/wo/ich/bin) ermitteln. Weil durch "." die Datei /ich/weiss/wo/ich/bin/grenze.hier ein Bestandteil von /usr/local/conf/firewall ist, erhalte ich auch mit dirname das Ergebnis: /usr/local/conf. Die Zeile wird durch den Inhalt der Datei "ersetzt". (Vermutlich liegt hier das eigentliche Problem.)
Wenn ich also in der Datei grenze.hier auf eine andere Datei grenze.dort zugreifen will und diese z.B. im gleichen Verzeichnis liegt, muss ich irgendwie den Pfad /ich/weiss/wo/ich/bin angeben.
Fred hatte vorgeschlagen, eine Variablen in firewall mit /ich/weiss/wo/ich/bin zu definieren oder alternativ in grenze.hier den Zugriff durch /ich/weiss/wo/ich/bin/grenze.dort zu realisieren. Vermutlich werden ich auf eine dieser Lösungen zurückgreifen müssen.
das kommt drauf an... wenn es userbezogen ist, wäre in ~/profile der bessere Platz... letzlich ...eh unklar dein Problem....Firewallscripts werden am Anfang gestartet... können aber userabhängig überschrieben werden... global wird /etc/profile (?) abgearbeitet... bei jedem UserLogin wird (wenn vorhanden !!!) die ~/.profile abgearbeitet. Die gibt es standardmässig nicht ... die Ersatzlösung: eine globale Variable mit Wert laden... aber bitte in der /etc/profile auf initialisieren... sicher ist sicher...
Danke
Uwe
Fred -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org