Enregistrer le répertoire actuel dans la variable en utilisant Bash?

111

Ce que j'essaie de faire est de trouver le répertoire de travail actuel et de l'enregistrer dans une variable, afin que je puisse l'exécuter export PATH=$PATH:currentdir+somethingelse. Je ne suis pas tout à fait sûr s'ils ont une variable qui contient cwd par défaut.

Comment enregistrer le répertoire actuel dans une variable à l'aide de Bash?

Stupide.Fat.Cat
la source
donc pour l'enregistrer dans une variable, je ferais mydir =. ?
Stupid.Fat.Cat
1
yup vient de tester avec mydir =. puis ls $ mydir -mais c'est relatif donc ce sera le pwd de partout où vous l'exécutez
mcalex
Merci! espérons que cela fonctionne pour moi
Stupid.Fat.Cat
Oh, j'avais des espaces. tt $ {PWD} aurait dû fonctionner. haha. ... whoops
Stupid.Fat.Cat

Réponses:

189

Cela enregistre le chemin absolu du répertoire de travail actuel vers la variable cwd:

cwd=$(pwd)

Dans votre cas, vous pouvez simplement faire:

export PATH=$PATH:$(pwd)+somethingelse
sampson-chen
la source
1
pour une raison quelconque, si je change pour un autre répertoire, cela met également à jour la cwdvariable. Comme si elle appelait la pwdfonction à chaque fois ... dpaste.de/Kn7F Comment puis-je éviter cela?
tutuca
1
$CWDpeut être une variable d'environnement spéciale (réservée) dans votre shell. Essayez plutôt un nom différent, tel que$CWD_MY_VAR
sampson-chen
Utiliser des backticks fait la même chose.
tutuca
1
Pourquoi ne pas simplement utiliser "$PWD"?
leetbacoon
28

J'ai ce qui suit dans mon .bash_profile:

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

donc chaque fois que je veux me souvenir d'un répertoire, je peux simplement taper, par exemple marquer ici .

Ensuite, quand je veux retourner à cet emplacement, je tape simplement cd $ là-bas

Gérardw
la source
Fonctionne bien mais pour les chemins avec des espaces, par exemple "Google Drive", vous devez le faire cd "$foo"pour que tout le chemin soit lu
mercergeoinfo
3
Pour contourner le problème des espaces dans le chemin, changez export $1=`pwd` pour export $1="`pwd`" et puis lors de l'appel de tels chemins, utilisez cd "$foo"au lieu de justecd $foo
mercergeoinfo
mercergeoinfo: À proprement parler, les guillemets export $1="`pwd`"ne sont pas nécessaires, car le fractionnement de mots ne se produit pas à droite d'une affectation, bien que la citation des extensions soit une bonne habitude de s'y habituer.
Larry
2
Voir aussi cdable_varspour taper justecd there
John Cummings
4

Votre mission a un extra $:

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

pour une réponse relative , utilisez.

tester avec:

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

Le premier lsvous montrera tout dans le répertoire courant, le second vous montrera tout dans le répertoire racine ( /).

Mcalex
la source
1

variable du répertoire de travail actuel, c.-à-d. chemin complet / home / dev / autre

dir=$PWD

imprimer le chemin complet

echo $dir
Piyush Sharma
la source
0

Encore une variante:

export PATH=$PATH:\`pwd`:/foo/bar
thème
la source
0

Vous pouvez utiliser la variable intégrée du shell PWD, comme ceci:

export PATH=$PATH:$PWD+somethingelse
mijoter
la source