Pourquoi devriez-vous exécuter cd. avant de faire quoi que ce soit?

Réponses:

32

Non.

Du moins pas comme ça. La ligne précédente du document cité est importante:

  • Configurez votre invite pour faire pwdchaque fois que vous cd.
  • Faites toujours un cd .avant de faire quoi que ce soit.

De cette façon, vous, en tant qu'opérateur, vérifiez votre répertoire de travail actuel avant de faire quoi que ce soit d'important, car il est imprimé à chaque changement. cd .n'a aucun sens autrement.

Cette "vérification" est une bonne chose et vous devez en adapter une forme. Une variante plus courante (à mon humble avis) de ce thème consiste à toujours imprimer le répertoire de travail à l'invite.

romain
la source
11
Il vaut probablement mieux penser à cela comme "toujours taper 'pwd' avant de faire quelque chose d'important pour vous assurer que vous êtes dans le répertoire que vous pensez être"
Rod MacPherson
4
Pourquoi ne pas faire juste pwdavant de faire quoi que ce soit?
Martin Konecny
15
En fait, cela a une utilité. Si vous êtes entré dans un répertoire via un lien symbolique, et que le lien est ensuite supprimé et recréé ailleurs, comme lors d'un déploiement de serveur où les versions sont contrôlées avec un lien symbolique vers "current_release", alors cela cd .changerait le sous-jacent réel répertoire dans lequel vous vous trouvez.
Stewart
1
+1 pour " toujours imprimer le répertoire de travail à l'invite." Voilà ce que je fais.
Paddy Landau
4
@Stewart Malheureusement, cela n'aidera pas si le lien symbolique change après cd . mais avant de faire autre chose. Cela réduit simplement la probabilité d'être dans le mauvais répertoire, mais ne résout pas le problème général. À moins que vous ne basculiez vers le répertoire réel en utilisant quelque chose comme cd $(readlink -f .)étant donné que vous voulez réellement y rester.
scai
18

Si le répertoire de travail actuel de votre shell est supprimé, il est possible de perdre des données.

Par exemple,

$ pwd
/home/user/test
$ rmdir /home/user/test
$ pwd
/home/user/test
$ some_command | tee command.log
tee: command.log: No such file or directory
<long output>

La sortie de some_commandn'a pas été écrite sur le disque.

Taper cd .avant d'exécuter une commande révélera le problème.

$ pwd
/home/user/test
$ rmdir /home/user/test
$ cd .
$ pwd
.

Si le répertoire du répertoire de travail en cours était supprimé et recréé, la frappe cd ."actualiserait" la référence à ce répertoire.

$ ls
foo bar ljz
$ pwd
/home/user/test
$ rmdir /home/user/test
$ mkdir /home/user/test
$ pwd
/home/user/test
$ ls
$ cd .
$ ls 
foo bar ljz

la source
13

Je pense qu'il est plus important d'afficher votre répertoire actuel.

Sur chaque serveur Linux, je modifie l'invite en /etc/bashrcchangeant "W" en "w".

 [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "

à

 [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \w]\\$ "

L'effet de ceci est:

[root@xt include]#

contre

[root@xt /usr/src/spl-0.6.1/include]# 
ewwhite
la source
est PS1spécifique à bash?
qdii
Je pense que oui ... C'est tout ce que j'utilise.
ewwhite
1
Vos modifications pourraient être perdues avec la prochaine mise à niveau du système.
ott--
2
@ ott-- Le stick it your ~/.profileor ~/.bash_profileainsi que la mise à jour/etc/skel/.profile
jscott