
Alguns programas não reconhecem atalhos de til em nomes de arquivos e esperam caminhos canônicos completos, por exemplo, /home/dave/myfile.txt
em vez de ~/myfile.txt
.
Existe uma maneira de substituir o bash ~
e ~user
por 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.