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 -- 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
Am Fr Mai 2 2008 schrieb Uwe Diederich:
Wie kann ich in "datei" "pfad" ermitteln?
Mit dem Befehl pwd. Bye Michael -- God does not only play dice , but sometimes he throws them, where they cannot be seen -- Stephen Hawking _____________________________________________________________________________ http://macbyte.info/ Mobile Loadavg.: 0.18 0.29 0.35 http://dattuxi.de/ Registered Linux User #228306 Linux 2.6.24-16 x86_64 ICQ #151172379 -- 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
Michael Raab wrote:
Am Fr Mai 2 2008 schrieb Uwe Diederich:
Wie kann ich in "datei" "pfad" ermitteln?
Mit dem Befehl pwd.
pwd gibt mir dem Standort des aufrufenden Scripts bekannt bzw. das Verzeichnis aus dem es aufgerufen wird. Ich braucht der Standort der darin eingebundenen Datei, also: . pfad/datei ^^^^ Weil außerdem die Standort des aufrufenden Scripts und der eingebundenen Datei verschieden sind, hilft auch eine Auswertung von "$0" nicht. mfg Uwe -- 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
Am Fr Mai 2 2008 schrieb Uwe Diederich:
Michael Raab wrote:
Am Fr Mai 2 2008 schrieb Uwe Diederich:
Wie kann ich in "datei" "pfad" ermitteln?
Mit dem Befehl pwd.
pwd gibt mir dem Standort des aufrufenden Scripts bekannt bzw. das Verzeichnis aus dem es aufgerufen wird. Ich braucht der Standort der darin eingebundenen Datei, also:
. pfad/datei ^^^^
Weil außerdem die Standort des aufrufenden Scripts und der eingebundenen Datei verschieden sind, hilft auch eine Auswertung von "$0" nicht.
Und woher weiss das Script welche Datei eingebunden werden muss? Glaskugel? Bye Michael -- Es wird niemals so viel gelogen wie vor der Wahl, während des Krieges und nach der Jagd. -- Otto von Bismarck _____________________________________________________________________________ http://macbyte.info/ Mobile Loadavg.: 0.25 0.57 0.58 http://dattuxi.de/ Registered Linux User #228306 Linux 2.6.24-16 x86_64 ICQ #151172379 -- 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
Michael Raab wrote:
Am Fr Mai 2 2008 schrieb Uwe Diederich:
Michael Raab wrote:
Am Fr Mai 2 2008 schrieb Uwe Diederich:
Wie kann ich in "datei" "pfad" ermitteln?
Mit dem Befehl pwd.
pwd gibt mir dem Standort des aufrufenden Scripts bekannt bzw. das Verzeichnis aus dem es aufgerufen wird. Ich braucht der Standort der darin eingebundenen Datei, also:
. pfad/datei ^^^^
Weil außerdem die Standort des aufrufenden Scripts und der eingebundenen Datei verschieden sind, hilft auch eine Auswertung von "$0" nicht.
Und woher weiss das Script welche Datei eingebunden werden muss? Glaskugel?
s.o. Standort und Name der einzubindenen Datei sind über "pfad" (=Verzeichnis) und "datei" (=Name der Datei) fest verdrahtet. In der einzubindenden Datei wird eine zweite Datei ausgwertet, deren Standort relativ zum Standort der einzubindenden Datei ist. Um diese zweite Datei zu finden, benötige ich den Standort der einzubindenen Datei, also "pfad". Ein Möglichkeit wäre, "pfad" als Variable zu definieren. Dann wäre der Standort auch in der einzubindenden Datei verfügbar. Diesen Workaround möchte ich aber nicht verwenden. Ebenso möchte ich "pfad" nicht in der aufzurufenden Datei fest definieren. Ich suche also nach einer Möglichkeit, den Standort einer in ein bash-Script eingebundenen Datei dynamisch zur Laufzeit zu ermitteln. mfg Uwe -- 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
Uwe Diederich schrieb:
Michael Raab wrote:
Am Fr Mai 2 2008 schrieb Uwe Diederich:
Wie kann ich in "datei" "pfad" ermitteln?
Mit dem Befehl pwd.
pwd gibt mir dem Standort des aufrufenden Scripts bekannt bzw. das Verzeichnis aus dem es aufgerufen wird. Ich braucht der Standort der darin eingebundenen Datei, also:
. pfad/datei ^^^^
Weil außerdem die Standort des aufrufenden Scripts und der eingebundenen Datei verschieden sind, hilft auch eine Auswertung von "$0" nicht.
script ändern ? Wenn (!) das Script den Pfad kennt...kannst du ihn in eine Variable laden... manchmal hilft aber auch absolute Adressierung... Ansonsten -.... Pfad ermitteln mit find (aber das dauert)... Findutils-locate ...
mfg
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
Fred Ockert wrote:
Uwe Diederich schrieb:
Michael Raab wrote:
Am Fr Mai 2 2008 schrieb Uwe Diederich:
Wie kann ich in "datei" "pfad" ermitteln?
Mit dem Befehl pwd.
pwd gibt mir dem Standort des aufrufenden Scripts bekannt bzw. das Verzeichnis aus dem es aufgerufen wird. Ich braucht der Standort der darin eingebundenen Datei, also:
. pfad/datei ^^^^
Weil außerdem die Standort des aufrufenden Scripts und der eingebundenen Datei verschieden sind, hilft auch eine Auswertung von "$0" nicht.
script ändern ? Wenn (!) das Script den Pfad kennt...kannst du ihn in eine Variable laden...
manchmal hilft aber auch absolute Adressierung... Ansonsten -.... Pfad ermitteln mit find (aber das dauert)... Findutils-locate ...
Auch problematisch bei mehreren Treffern. Die Variablen-Lösung und auch eine feste (absolute) Adresse wollte ich gerade vermeiden. Leider werden ich mich doch wohl für eine dieser beiden entscheiden müssen. Danke Uwe -- 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
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 -Ingo. -- 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
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. Danke Uwe -- 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
Uwe Diederich wrote:
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.)
Ich hoffe, dass du selbst diesen Absatz verstanden hast, ich habe nur Bahnhof kapiert. Geht es um den NAMEN der Datei xxx oder um einen Text in der Datei xxx? Stringmanipulation ist hier zu sehen: http://tldp.org/LDP/abs/html/string-manipulation.html variable=/ein/ganz/seltsamer/pfad/zu/einer/datei echo ${variable##*/} # Dateiname echo ${variable%/*} # Pfad von Datei # datei # /ein/ganz/seltsamer/pfad/zu/einer -- Sandy Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com -- 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
Sandy Drobic wrote:
Uwe Diederich wrote:
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.)
Ich hoffe, dass du selbst diesen Absatz verstanden hast, ich habe nur Bahnhof kapiert. Geht es um den NAMEN der Datei xxx oder um einen Text in der Datei xxx? Im augenblick glaube ich noch da durchzukommen. Aber frage mich bitte nicht in ein paar Stunden/Tag/...
Stringmanipulation ist hier zu sehen: http://tldp.org/LDP/abs/html/string-manipulation.html
variable=/ein/ganz/seltsamer/pfad/zu/einer/datei echo ${variable##*/} # Dateiname echo ${variable%/*} # Pfad von Datei
# datei # /ein/ganz/seltsamer/pfad/zu/einer
Das Problem ist die die Manipulation eines Strings, sondern das darankommen. Also geben sind drei Datei: 1 das Script: run.bash 2 die eingebundene Datei: include.txt 3 die Zugriffsdatei: look.at 2+3 liegen in einem Verzeichnis /irgendwo 1 enthält eine Zeile der Form: ". /irgendwo/include.txt" 2 greift auf 3 zu, ohne zu wissen in welchem Verzeichnis sich 2 bzw. 3 befindet. Die Aufgabe: In 2 den Wert "/irgendwo" verfügbar machen. Der Wert sollte zur Laufzeit ermittelt werden. (Auch nicht viel verständlicher, oder?) Fred hatte vorgeschlagen entweder in 1 eine Variable mit dem Wert "/irgendwo" zu definieren und diese in 2 zu verwenden, oder in 2 "/irgendwo" direkt zu verwenden, also "/irgendwo/look.at". Mit freundlichen Grüßen Uwe Diederich -- 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
Am Freitag, 2. Mai 2008 schrieb Uwe Diederich:
Sandy Drobic wrote:
Uwe Diederich wrote:
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.)
Ich hoffe, dass du selbst diesen Absatz verstanden hast, ich habe nur Bahnhof kapiert. Geht es um den NAMEN der Datei xxx oder um einen Text in der Datei xxx?
Im augenblick glaube ich noch da durchzukommen. Aber frage mich bitte nicht in ein paar Stunden/Tag/...
Stringmanipulation ist hier zu sehen: http://tldp.org/LDP/abs/html/string-manipulation.html
variable=/ein/ganz/seltsamer/pfad/zu/einer/datei echo ${variable##*/} # Dateiname echo ${variable%/*} # Pfad von Datei
# datei # /ein/ganz/seltsamer/pfad/zu/einer
Das Problem ist die die Manipulation eines Strings, sondern das darankommen.
Also geben sind drei Datei: 1 das Script: run.bash 2 die eingebundene Datei: include.txt 3 die Zugriffsdatei: look.at
2+3 liegen in einem Verzeichnis /irgendwo
1 enthält eine Zeile der Form: ". /irgendwo/include.txt"
2 greift auf 3 zu, ohne zu wissen in welchem Verzeichnis sich 2 bzw. 3 befindet.
Die Aufgabe: In 2 den Wert "/irgendwo" verfügbar machen. Der Wert sollte zur Laufzeit ermittelt werden.
(Auch nicht viel verständlicher, oder?)
Fred hatte vorgeschlagen entweder in 1 eine Variable mit dem Wert "/irgendwo" zu definieren und diese in 2 zu verwenden, oder in 2 "/irgendwo" direkt zu verwenden, also "/irgendwo/look.at".
Mit freundlichen Grüßen
Uwe Diederich
und was, wenn run.bash Datei 'sich selber greppt'? Etwa so: grep include.txt run.bash (ginge da auch ein grep include.txt $0 ) dann hättest Du die komplette Zeile, die läßt sich ja vielleicht dafür optimieren. Seufz, ich hab jetzt den Befehl vergessen, aber man kann auch die Zeilen ähnlich Perls split 'TRENNER' in eine Liste 'zerhacken': grep include.txt bash.run | splitte -? '/' -v5 (das wäre dann der 5te Teil oder so - ich probiers immer bisses geht) und dann ginge so 'was in der Richtung wie: for arg in [ `grep include.txt run.bsh | split '/' ` ] do command(s)... done schönes Wochenende, calli -- 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
Calli wrote:
und was, wenn run.bash Datei 'sich selber greppt'? Etwa so: grep include.txt run.bash (ginge da auch ein grep include.txt $0 ) dann hättest Du die komplette Zeile, die läßt sich ja vielleicht dafür optimieren. Seufz, ich hab jetzt den Befehl vergessen, aber man kann auch die Zeilen ähnlich Perls split 'TRENNER' in eine Liste 'zerhacken': grep include.txt bash.run | splitte -? '/' -v5 (das wäre dann der 5te Teil oder so - ich probiers immer bisses geht) und dann ginge so 'was in der Richtung wie: for arg in [ `grep include.txt run.bsh | split '/' ` ] do command(s)... done
Du meinst wahrscheinlich cut. Ironischerweise setze ich so ein Konstrukt bereits zu Lösung einer anderen Aufgabe ein. Ich sollte wohl mal wieder ein bischen Analogie-Denken üben. Vielen Danke für den Hinweis und den Denkanstoß. Ich wünsche dir auch ein schönes Wochenende. Mit freundlichen Grüßen Uwe Diederich -- 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
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
Fred Ockert wrote:
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... Es handelt sich hierbei nicht um ein Firewall- oder ein anderes System-Script. Wenn dieser Eindruck entstanden ist, bitte ich um Entschuldigung. Ich wollte nur in dem Beispiel bleiben.
mfg Uwe -- 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
Am Freitag, 2. Mai 2008 13:11:29 schrieb Uwe Diederich:
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
aus man bash: BASH_SOURCE An array variable whose members are the source filenames corre- sponding to the elements in the FUNCNAME array variable. ------------>/tmp/xx #!/bin/bash echo "\$0=$0" echo "\$BASH_ARGC=$BASH_ARGC" echo "\$BASH_ARGV=$BASH_ARGV" echo "\$BASH_SOURCE=$BASH_SOURCE" ---------------------- Aufruf als /tmp/xx $0=/tmp/xx $BASH_ARGC= $BASH_ARGV= $BASH_SOURCE=/tmp/xx Aufruf als . /tmp/xx $0=/bin/bash $BASH_ARGC=1 $BASH_ARGV=/tmp/xx $BASH_SOURCE=/tmp/xx Aufruf als source /tmp/xx $0=/bin/bash $BASH_ARGC=1 $BASH_ARGV=/tmp/xx $BASH_SOURCE=/tmp/xx Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Dr. Jürgen Vollmer wrote:
Am Freitag, 2. Mai 2008 13:11:29 schrieb Uwe Diederich:
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?
aus man bash: BASH_SOURCE An array variable whose members are the source filenames corre- sponding to the elements in the FUNCNAME array variable.
------------>/tmp/xx #!/bin/bash echo "\$0=$0" echo "\$BASH_ARGC=$BASH_ARGC" echo "\$BASH_ARGV=$BASH_ARGV" echo "\$BASH_SOURCE=$BASH_SOURCE" ----------------------
Aufruf als /tmp/xx
$0=/tmp/xx $BASH_ARGC= $BASH_ARGV= $BASH_SOURCE=/tmp/xx
Sehr schön, das hatte ich schon wieder vergessen. Es gibt jedoch eine Lücke mit relativen Pfaden, diese tauchen dann auch als relative Pfade auf: $0=./testshell.sh $BASH_ARGC= $BASH_ARGV= $BASH_SOURCE=./testshell.sh Also sollte man vorher testen, ob es sich um einen relativen oder absoluten Pfad handelt. -- Sandy Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com -- 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
Sandy Drobic wrote:
Dr. Jürgen Vollmer wrote:
Am Freitag, 2. Mai 2008 13:11:29 schrieb Uwe Diederich:
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?
aus man bash: BASH_SOURCE An array variable whose members are the source filenames corre- sponding to the elements in the FUNCNAME array variable.
------------>/tmp/xx #!/bin/bash echo "\$0=$0" echo "\$BASH_ARGC=$BASH_ARGC" echo "\$BASH_ARGV=$BASH_ARGV" echo "\$BASH_SOURCE=$BASH_SOURCE" ----------------------
Aufruf als /tmp/xx
$0=/tmp/xx $BASH_ARGC= $BASH_ARGV= $BASH_SOURCE=/tmp/xx
Sehr schön, das hatte ich schon wieder vergessen. Es gibt jedoch eine Lücke mit relativen Pfaden, diese tauchen dann auch als relative Pfade auf:
$0=./testshell.sh $BASH_ARGC= $BASH_ARGV= $BASH_SOURCE=./testshell.sh
Also sollte man vorher testen, ob es sich um einen relativen oder absoluten Pfad handelt.
Ich bin mir nicht sicher ob ich das zu dieser späten Stunde noch genau verstehe. Damit werde ich wohl eine Weihe herum spielen müssen. Zunächst einmal vielen Dank und noch ein schönes Wochenende. Mit freundlichen Grüßen Uwe Diederich -- 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
participants (7)
-
Calli
-
Dr. Jürgen Vollmer
-
Fred Ockert
-
Ingo Freund
-
Michael Raab
-
Sandy Drobic
-
Uwe Diederich