Por que você deve executar o cd. antes de fazer alguma coisa?

Respostas:

32

Você não

Pelo menos não apenas assim. A linha anterior no documento citado é importante:

  • Configure seu prompt para fazer pwdsempre que você fizer um cd.
  • Sempre faça um cd .antes de fazer qualquer coisa.

Dessa forma, você como operador verifica seu diretório de trabalho atual antes de fazer qualquer coisa importante, pois é impresso a cada alteração. cd .não faz sentido de outra maneira.

Essa "verificação" é uma coisa boa e você deve adaptar uma forma dela. Uma variação mais comum (IMHO) desse tema é sempre imprimir o diretório de trabalho no prompt.

romano
fonte
11
Provavelmente é melhor pensar nisso como "sempre digite 'pwd' antes de fazer qualquer coisa importante para garantir que você esteja no diretório em que você pensa que está" #
Rod MacPherson
4
Por que não fazer um pwdantes de fazer qualquer coisa?
Martin Konecny
15
Na verdade, ele tem um uso. Se você entrou em um diretório por meio de um link simbólico, e o link é excluído e recriado em outro local, como durante a implantação do servidor em que as versões são controladas com um link simbólico para "current_release", cd .isso mudaria o subjacente real diretório em que você está.
Stewart
1
+1 para " sempre imprima o diretório de trabalho no prompt". É isso que eu faço.
Paddy Landau
4
@ Stewart Infelizmente isso não ajudará se o link simbólico mudar depois, cd . mas antes de fazer qualquer outra coisa. Apenas reduz a probabilidade de estar no diretório errado, mas não resolve o problema geral. A menos que você mude para o diretório real usando algo como, cd $(readlink -f .)dado que você realmente deseja ficar lá.
Scai
18

Se o diretório de trabalho atual do seu shell for removido, é possível perder dados.

Por exemplo,

$ 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>

A saída de some_commandnão foi gravada no disco.

Digitar cd .antes de executar um comando revelaria o problema.

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

Se o diretório do diretório de trabalho atual fosse removido e recriado, a digitação cd ."atualizaria" a referência a esse diretório.

$ 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

fonte
13

Eu acho que é mais importante mostrar seu diretório atual.

Em todos os servidores Linux, modifico o prompt /etc/bashrcalterando "W" para "w".

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

para

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

O efeito disso é:

[root@xt include]#

versus

[root@xt /usr/src/spl-0.6.1/include]# 
ewwhite
fonte
é PS1específico do bash?
QDII
Eu acho que sim ... é tudo que eu uso.
ewwhite
1
Suas alterações podem se perder com a próxima atualização do sistema.
#
2
@ ott-- O stick it seu ~/.profileou ~/.bash_profile, bem como a atualização/etc/skel/.profile
jscott 30/06