PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie muss ich das verstehen?


alpha-centauri
2005-06-07, 10:14:20
http://rowa.giso.de/german/shell-scripte.html

Bin ich grad am lesen.

hab also eine Datei mit script.txt erstellt. zwei befehle reingesetzt und mit chmod u+x das ganze ausfuehrbar gemacht.

was ich nicht ganz verstehe, ist folgender aufruf des scriptes:

./script.txt

wofuer steht der ./ ?

wieso lang es nicht, einfach nur script.txt auszufuehren ?

ist dieses ./ allgemeingueltig ?

Kyp
2005-06-07, 10:27:44
Das ./ zeigt immer auf das Verzeichnis, in dem du dich gerade befindest.

./script.txt
bedeutet also du führst die Datei script.txt aus dem aktuellen Verzeichnis aus. Wenn du das ./ weglässt, wird nur nach Befehlen in deinem PATH gesucht und so die Datei script.txt nicht gefunden. Welche Verzeichnisse alle zu deinem PATH gehören, kannst du mit echo $PATH rausfinden.

Hab ich das jetzt doof erklärt? :biggrin:

alpha-centauri
2005-06-07, 10:36:08
Das ./ zeigt immer auf das Verzeichnis, in dem du dich gerade befindest.

./script.txt
bedeutet also du führst die Datei script.txt aus dem aktuellen Verzeichnis aus. Wenn du das ./ weglässt, wird nur nach Befehlen in deinem PATH gesucht und so die Datei script.txt nicht gefunden. Welche Verzeichnisse alle zu deinem PATH gehören, kannst du mit echo $PATH rausfinden.

Hab ich das jetzt doof erklärt? :biggrin:

klar. macht schon sinn.

nehmen wir an, ich haette ein programm blabla.exe (klar, gibts nicht - beispiel:) unter /root/ liegen. das programm muss ich dann doch auch als ./blabla.exe ausfuehren ?

Kyp
2005-06-07, 10:40:31
Genau.

PatkIllA
2005-06-07, 10:42:39
klar. macht schon sinn.

nehmen wir an, ich haette ein programm blabla.exe (klar, gibts nicht - beispiel:) unter /root/ liegen. das programm muss ich dann doch auch als ./blabla.exe ausfuehren ?
wenn du in /root/ bist schon. Ansonsten geht auch einfach /root/blabla.exe oder relative Pfadnamen.
Ist unter Win eigentlich genauso, nur das da auch im aktuellen Pfad gesucht wird und der Slash normalerweise andersherum ist

Coda
2005-06-07, 12:58:28
Im Gegensatz zu Windows sucht Unix nicht automatisch im aktuellen Pfad nach einer Executable, deshalb must du sie explizit mit ./ aufrufen.

ThePsycho
2005-06-07, 17:52:08
natürlich kann man es aber so einstellen, dass ein "./" unnötig wird.

in einer bash z.B. so:

export PATH="$PATH:."

alpha-centauri
2005-06-07, 18:22:41
natürlich kann man es aber so einstellen, dass ein "./" unnötig wird.

in einer bash z.B. so:

export PATH="$PATH:."

gib mir noch z wei wochen linux, dann versteh ic hdas :)

Xanthomryr
2005-06-07, 21:40:36
gib mir noch z wei wochen linux, dann versteh ic hdas :)
Dadurch wird das aktuelle Verzeichnis, also der ., in der Pathvariable ($PATH) aufgenommen.

Allerdings hat es ja einen Grund warum das nicht dadrin steht, so kann man nämlich nicht ausversehen ein Script starten.

Coda
2005-06-08, 09:33:00
Der Grund ist doch wohl eher dass die Programme sich in Unix normal eh in /usr/bin, /bin, etc. befinden und nicht bei den Daten.