GNU/Linux >> Tutoriels Linux >  >> Linux

$pwd ? (vs répertoire de travail actuel) ?

Donc Wikipédia (lien) me dit que la commande pwd est l'abréviation de "répertoire de travail d'impression", et cela a du sens.

Mais pour la variable d'environnement, le "P" doit être un acronyme pour autre chose que print.

J'entends des gens parler de "répertoire de travail actuel", ce qui sonne mieux et est plus intuitif, mais la variable d'environnement semble toujours s'appeler $PWD, et non $CWD. Personne ne dit jamais "Avez-vous vérifié la variable du répertoire de travail d'impression ?".

Je joue actuellement avec le serveur d'applications Web uWSGI, et lors de son exécution, il me dit (sur la page de statistiques uWSGI) :

"cwd":"/home/velle/greendrinks",

donc ils aiment évidemment le (acronyme plus intuitif) cwd sur pwd .

Je suppose que j'essaie de comprendre si j'ai mal compris quelque chose, ou s'il s'agit simplement d'avoir donné à la variable d'environnement un nom peu intuitif ?

Réponse acceptée :

Cela dépend de ce que vous faites. Tout d'abord, $PWD est une variable d'environnement et pwd est un shell intégré ou un vrai binaire :

$ type -a pwd
pwd is a shell builtin
pwd is /bin/pwd

Maintenant, le bash intégré affichera simplement la valeur actuelle de $PWD sauf si vous utilisez le -P drapeau. Comme expliqué dans help pwd :

pwd: pwd [-LP]

    Imprime le nom du répertoire de travail courant.

    Choix :

      -L

          imprimer la valeur de $PWD s'il nomme le répertoire de travail courant

      -P

          imprimer le répertoire physique, sans aucun lien symbolique

    Par défaut, "pwd" se comporte comme si "-L" était spécifié.

Le pwd binaire, d'autre part, obtient le répertoire courant via le getcwd(3) appel système qui renvoie la même valeur que readlink -f /proc/self/cwd .
Pour illustrer, essayez de vous déplacer dans un répertoire qui est un lien vers un autre :

$ ls -l
total 4
drwxr-xr-x 2 terdon terdon 4096 Jun  4 11:22 foo
lrwxrwxrwx 1 terdon terdon    4 Jun  4 11:22 linktofoo -> foo/
$ cd linktofoo
$ echo $PWD
/home/terdon/foo/linktofoo
$ pwd
/home/terdon/foo/linktofoo
$ /bin/pwd
/home/terdon/foo/foo

Donc, en conclusion, sur les systèmes GNU (comme Ubuntu), pwd et echo $PWD sont équivalents sauf si vous utilisez le -P option, mais /bin/pwd est différent et se comporte comme pwd -P .

Source https://askubuntu.com/a/476633/291937


Linux
  1. Est-il préférable d'utiliser $(pwd) ou $pwd ?

  2. Comment exécuter un programme avec un répertoire de travail différent de l'actuel, à partir du shell Linux ?

  3. Comment définir le répertoire de travail du processus parent ?

  4. Changer le répertoire de travail dans le shell avec un script python

  5. Répertoire courant du script shell ?

La commande Linux pwd

Commande Pwd sous Linux (répertoire de travail actuel)

Trouver le répertoire de travail actuel d'un processus utilisant Pwdx sous Linux

Comment imprimer le répertoire de travail à l'aide de la commande Linux pwd ?

Répertoire actuel abrégé dans l'invite du shell ?

impossible de sourcer le script dans un répertoire courant