Por que 'cd ~ “/ mydata”' tem sucesso enquanto 'cd ~ / “mydata”' não é

0

Por que o primeiro comando falha, enquanto o segundo é bem-sucedido?

$ cd ~"/mydata"
bash: cd: ~/mydata: No such file or directory

$ cd ~/"mydata"
    
por Tim 20.12.2016 / 20:32

1 resposta

5

A maneira como expansão de til funciona é que prefixo de til consiste em ~ mais todos os caracteres antes da primeira barra sem aspas ou no final da palavra, se não há nenhuma barra sem marcação. Então a substituição que acontece depende do prefixo do til; ~ , ~- e ~+ são casos especiais, caso contrário, o ~ é retirado e o restante dos caracteres é considerado um nome de usuário. Veja man bash (ou a página de manual do seu shell se esse shell não for Bash).

  • Em ~"/mydata" , o til é seguido por uma barra em citada e, portanto, o prefixo til é ~/mydata ; já que não há uma conta de usuário chamada /mydata , o prefixo til não será substituído e o shell estará procurando por um diretório chamado literalmente ~/mydata e não o encontrará.

  • Em ~/"mydata" o til é seguido por uma barra sem aspas e, assim, o til é substituído pelo conteúdo de $HOME se HOME for definido, caso contrário, com o nome do diretório inicial do usuário (retirado de /etc/passwd ); o shell estará procurando por um nome de diretório como /home/ username /mydata .

por 20.12.2016 / 20:56