Frage

Hier ist eine ziemlich elementar * nichts Frage:

In Anbetracht der folgende Symlink Schöpfung:

ln -s /usr/local/projects/myproject/ myproject

... aus meinem Home-Verzeichnis / home / JVF / , Eingabe der myproject Symlink gibt mir ein PWD / home / jfv / myproject / . Nun würde Ich mag das übergeordnete Verzeichnis des Verzeichnisses einzugeben ich symlinked habe, aber das cd .. Befehl bringt mich nur zurück zu meinem Home-Verzeichnis / home / jfv / . Gibt es trotzdem, den Symlink Weg zu entkommen, dass ich eingegeben habe, und hat stattdessen ein PWD gleich den aktuellen Pfad des myproject Verzeichnisses. Das heißt, die Änderung meiner pwd von / home / jfv / myproject / in / usr / local / projects / myproject /

Danke:)

War es hilfreich?

Lösung

Just Verwendung -P (physische) Flagge:

pwd -P

cd -P ..

Andere Tipps

Wenn Sie die folgenden Schritte Sie sollten in Ordnung sein.

1) Zuerst folgen Sie Ihrem symbolischen Link:

[jfv@localhost ~]$ cd myproject

2) Nun führen Sie den folgenden Befehl ein:

[jfv@localhost myproject]$ cd -P ./

3) Jetzt können Sie Ihren Standort überprüfen und Sie werden sehen, dass Sie auf dem physischen Verzeichnis sind

[jfv@localhost myproject]$ pwd

Die Ausgabe wird wie folgt aussehen:

/usr/local/projects/myproject

Nun, alles, was Sie tun wird lokal und nicht auf der Symlink.

Programmatisch würden Sie tun dies mit der getcwd Bibliotheksfunktion:

#include <unistd.h>
#include <stdio.h>

int main(int argc, char **argv)
{
    char buf[1024*1024L];
    char *cwd;

    cwd = getcwd(buf, sizeof buf);
    if (cwd == NULL) {
        perror("getcwd");
        return 1;
    }
    printf("%s\n", cwd);
    return 0;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top