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?


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

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


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

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 ( /).


0

Noch eine Variante:

export PATH=$PATH:\`pwd`:/foo/bar

0

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

export PATH=$PATH:$PWD+somethingelse

0

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

dir=$PWD

Drucken Sie den vollständigen Pfad

echo $dir
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.