Rorschachs Tagebuch

pwd lüg mich nicht an! Mai 28, 2009

Filed under: Linux — Rorschach @ 19:46
Tags: , ,

Wenn man pwd nicht über seinen kompletten Pfad sondern einfach so aufruft kann es passieren, dass pwd einen anlügt. Kleines Beispiel:

/tmp/test$ mkdir folder
/tmp/test$ ln -s folder fake-folder
/tmp/test$ ls -al
insgesamt 12
drwxr-xr-x 3 rorschach rorschach 4096 28. Mai 20:23 .
drwxrwxrwt 7 root      root      4096 28. Mai 20:23 ..
lrwxrwxrwx 1 rorschach rorschach    6 28. Mai 20:23 fake-folder -> folder
drwxr-xr-x 2 rorschach rorschach 4096 28. Mai 20:23 folder
/tmp/test$ cd fake-folder 
/tmp/test/fake-folder$ pwd
/tmp/test/fake-folder

Wie ihr hier seht sagt mir pwd ich wäre im Ordner /tmp/test/fake-folder. Da kann ich natürlich garnicht drin sein, weil so ein Ordner ja garnicht existiert. Das hat mir heute bei der Installation von der Sun Gridengine und einem kleinen Shell-Skript arge Probleme bereitet gehabt, da ich das ganze in einem Ordner, welcher ein symbolischer Link auf ein NFS-Share ist, installiert habe.

Fixen kann man das ganz einfach indem man pwd über seinen kompletten Pfad aufruft:

/tmp/test/fake-folder$ pwd
/tmp/test/fake-folder
/tmp/test/fake-folder$ /bin/pwd
/tmp/test/folder

Warum dies so ist, also warum pwd beim Aufruf über den kompletten Pfad den richtigen Ordner und nicht den symbolischen Link anzeigt weiss ich leider nicht, aber es funktioniert zumindest.

 

6 Responses to “pwd lüg mich nicht an!”

  1. Anonymous Says:

    pwd -P sollte das richtige anzeigen

  2. reitzmichnicht Says:

    pwd -P sollte das richtige anzeigen

  3. rmn Says:

    pwd -P sollte das richtige anzeigen

  4. DrScott Says:

    Der Grund für den Unterschied zwischen „pwd“ und „/bin/pwd“: Ersters startet kein Programm, sonder die „built-in“ Funktion der Bash. Genauso, wie es auf dem System auch kein „cd“-Programm gibt. Bei „pwd“ ist es etwas anders: Hier gibt es beides. /bin/pwd ist also ein echtes Programm. Andere Implementation -> andere Ausgabe…

  5. Tempura Says:

    pwd lügt nicht, es gibt nur eine Antwort die du nicht erwartet hast😉
    Der Symbolische Link ist einfach ein anderer Name für das Verzeichnis.

  6. Björn Says:

    Das wäre ja eine Überraschung, wenn man nach „cd fake-folder“ ein „cd ..“ eingibt und ganz woanders rauskommt. Deshalb merkt sich die Shell wie man wohin gelangt ist und ihr eigenes „pwd“ meldet das auch so.

    Das „/bin/pwd“ kann sowas natürlich nicht. Es muss sich ausgehend von seinem „current working directory“, einem Inode/ File-Handle, per „..“ so lange „nach oben hangeln“, bis es im Root-Verzeichnis angekommen ist (Inode von .. = Inode von .).


Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s