Como posso fazer o bash converter '~'?

Como posso fazer o bash converter '~'?

Alguns programas não reconhecem atalhos de til em nomes de arquivos e esperam caminhos canônicos completos, por exemplo, /home/dave/myfile.txtem vez de ~/myfile.txt.

Existe uma maneira de substituir o bash ~e ~userpor caminhos canônicos completos sempre que um til for usado?

Responder1

Bem, não tenho certeza sobre perl, mas no script bash você pode fazer essa conversão com eval:

eval dir='~user/somedir'

$dir conterá o caminho completo, ou seja, /home/user/somedir neste ponto.

Responder2

Quando você executa um comando no shell Bash, como:

command ~/myfile.txt

o shell primeiro faz a expansão ~(a menos que esteja entre aspas) e depois executa o comando com o resultado.

Mas é verdade, alguns programas não interpretam o ~, por exemplo:

$ cat "~/myfile.txt"
~/myfile.txt: No such file or directory

mas isso funciona imediatamente:

nano "~/myfile.txt"

Mas esse comportamento é mascarado pela expansão Bash, entãovocê não precisa de mais nenhuma interpretação.

Talvez seja óbvio, mas observe que se um programa usa arquivos de configuração e espera alguns caminhos nele, não é tarefa do Bash expandi-los.

informação relacionada