Comment puis-je get le directory de travail actuel?

Je veux avoir un script qui prend le directory de travail courant à une variable. La section qui a besoin du directory est comme dir = pwd . Il imprime simplement pwd comment puis-je get le directory de travail en cours dans une variable?

Il n'y a pas besoin de faire ça, c'est déjà dans une variable:

 $ echo $PWD /home/terdon 

La variable PWD est définie par POSIX et fonctionnera sur tous les shells compatibles POSIX:

PWD

Défini par le shell et par l'utilitaire cd. Dans la shell, la valeur doit être initialisée à partir de l'environnement comme suit. Si une valeur pour PWD est transmise au shell dans l'environnement lors de son exécution, la valeur est un path d'access absolu du directory de travail en cours qui n'est plus que {PATH_MAX} octets, y compris l'octet nul de fin et la valeur ne contient pas tous les composants qui sont des points ou des points, alors le shell doit définir PWD à la valeur de l'environnement. Sinon, si une valeur de PWD est transmise au shell dans l'environnement lors de son exécution, la valeur est un nom de path absolu du directory de travail en cours et la valeur ne contient aucun composant point ou point, est non spécifié si le shell définit PWD à la valeur de l'environnement ou définit PWD au path qui serait sorti par pwd -P. Sinon, l'utilitaire sh définit PWD sur le nom de path qui serait généré par pwd -P. Dans les cas où PWD est défini sur la valeur de l'environnement, la valeur peut contenir des composants qui se réfèrent à des files de type lien symbolique. Dans les cas où PWD est défini sur le path d'access qui sera généré par pwd -P, si l'autorisation est insuffisante sur le directory de travail actuel ou sur n'importe quel parent de ce directory, pour déterminer ce path, la valeur de PWD est non spécifié. Les affectations à cette variable peuvent être ignorées. Si une application définit ou désactive la valeur de PWD, les comportements des utilitaires cd et pwd ne sont pas spécifiés.


Pour la réponse la plus générale, la façon d'save la sortie d'une command dans une variable consiste à encadrer la command dans $() ou ` ` (backticks):

 var=$(command) 

ou

 var=`command` 

Parmi les deux, le $() est préféré car il est plus facile de build des commands complexes comme command0 $(command1 $(command2 $(command3))) .

dir=$(pwd)

Ceci est plus portable et préféré par rapport à la méthode des backticks.

L'utilisation de $() vous permet d'imbriquer les commands

eg: mech_pwd=$(pwd; echo in $(hostname))

Vous pouvez soit utiliser la variable d'environnement $PWD , soit écrire quelque chose comme:

 dir=`pwd` 

Vous devez utiliser la substitution de command pour save la sortie de la command pwd dans une variable. La substitution de command peut utiliser des points arrière ou des caractères en dollars. Comme ça:

 $ mkdir "/tmp/new dir" $ cd "/tmp/new dir" $ CWD="$(pwd)" $ echo $CWD /tmp/new dir $ cd ~ $ echo $CWD /tmp/new dir $ pwd /home/ja 

La valeur du directory de travail actuel peut être différente. Si vous utilisez des liens symboliques pour get le directory courant, pwd donnera des résultats différents de / usr / bin / pwd. Puisque vous utilisez bash, j'utiliserais:

 dir=$(/usr/bin/pwd) 

ou selon le commentaire:

 dir=$(pwd -P) 

comme je n'aime pas les citations arrière car ils ne peuvent pas nid.