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?


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

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


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

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


1

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

dir=$PWD

imprimer le chemin complet

echo $dir

0

Encore une variante:

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

0

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

export PATH=$PATH:$PWD+somethingelse
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.