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.


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

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]# 

é 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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.