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.
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 fazer o bash substituir ~
e ~user
por caminhos canônicos completos sempre que um til é usado?
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.
Quando você executa um comando no shell Bash, como:
command ~/myfile.txt
o shell primeiro faz a expansão de ~
(a menos que seja citado) e então 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 insted:
nano "~/myfile.txt"
Mas esse comportamento é mascarado pela expansão do Bash, então você não precisa de nenhuma interpretação adicional .
Talvez seja óbvio, mas observe que, se um programa usa um arquivo de configuração e espera alguns caminhos, não é uma tarefa do Bash expandi-lo.