Aktuelles Verzeichnis in Variable mit Bash speichern?

109

Ich versuche, das aktuelle Arbeitsverzeichnis zu finden und in einer Variablen zu speichern, damit ich es ausführen kann export PATH=$PATH:currentdir+somethingelse. Ich bin nicht ganz sicher, ob sie eine Variable haben, die standardmäßig cwd enthält.

Wie speichere ich das aktuelle Verzeichnis mit Bash in einer Variablen?

Stupid.Fat.Cat
quelle
Um es in einer Variablen zu speichern, würde ich mydir = ausführen. ?
Stupid.Fat.Cat
1
yup gerade mit mydir = getestet. dann ist es $ mydir - aber es ist relativ, so dass es das pwd von überall ist, wo Sie es ausführen
mcalex
Vielen Dank! Hoffen wir, dass dies für mich funktioniert
Stupid.Fat.Cat
Oh, ich hatte einige Räume. tt $ {PWD} hätte funktionieren sollen. Haha. ... whoops
Stupid.Fat.Cat

Antworten:

188

Dadurch wird der absolute Pfad des aktuellen Arbeitsverzeichnisses zur Variablen gespeichert cwd:

cwd=$(pwd)

In Ihrem Fall können Sie einfach Folgendes tun:

export PATH=$PATH:$(pwd)+somethingelse
Sampson-Chen
quelle
1
Wenn ich in ein anderes Verzeichnis wechsle, wird aus irgendeinem Grund auch die cwdVariable aktualisiert . Zum Beispiel, wenn die pwdFunktion jedes Mal aufgerufen wird ... dpaste.de/Kn7F Wie kann ich das vermeiden?
Tutuca
1
$CWDkann eine spezielle (reservierte) Umgebungsvariable in Ihrer Shell sein. Versuchen Sie stattdessen einen anderen Namen, wie$CWD_MY_VAR
Sampson-Chen
Das Verwenden von Backticks macht dasselbe.
Tutuca
1
Warum nicht einfach benutzen "$PWD"?
Leetbacoon
28

Ich habe Folgendes in meinem .bash_profile:

function mark {
    export $1=`pwd`;
}

Wenn ich mich also an ein Verzeichnis erinnern möchte, kann ich es einfach eingeben, z . B. dort markieren .

Wenn ich dann zu diesem Ort zurückkehren möchte, gebe ich dort einfach cd $ ein

gerardw
quelle
Funktioniert gut, aber für Pfade mit Leerzeichen, z. B. "Google Drive", muss cd "$foo"der gesamte Pfad gelesen werden
mercergeoinfo
3
Um das Problem mit Leerzeichen im Pfad export $1=`pwd` zu export $1="`pwd`" cd "$foo"cd $foo
umgehen,
mercergeoinfo: Genau genommen werden die Anführungszeichen export $1="`pwd`"nicht benötigt, da die Wortaufteilung nicht auf der rechten Seite einer Aufgabe erfolgt, obwohl das Zitieren von Erweiterungen als Gewohnheit gut ist, sich daran zu gewöhnen.
Larry
2
Siehe auch, cdable_varsum nur zu tippencd there
John Cummings
4

Ihre Aufgabe hat ein Extra $:

export PATH=$PATH:${PWD}:/foo/bar
chepner
quelle
3

Verwenden Sie für eine relative Antwort.

Test mit:

$ myDir=.
$ ls $myDir
$ cd /
$ ls $myDir

Das erste lszeigt Ihnen alles im aktuellen Verzeichnis, das zweite zeigt Ihnen alles im Stammverzeichnis ( /).

mcalex
quelle
0

Noch eine Variante:

export PATH=$PATH:\`pwd`:/foo/bar
Thema
quelle
0

Sie können die Shell-In-Build-Variable PWDwie folgt verwenden:

export PATH=$PATH:$PWD+somethingelse
simmerlee
quelle
0

aktuelle Arbeitsverzeichnisvariable dh vollständiger Pfad / home / dev / other

dir=$PWD

Drucken Sie den vollständigen Pfad

echo $dir
Piyush Sharma
quelle