Respostas:
eval echo "~$USER"
estiver assumindo que $USER
não contém caracteres especiais que o shell possa interpretar. Por exemplo, se USER="foo\$bar"
, então quando nós eval
o shell substituiremos $bar
na sua saída, o que não é o que você deseja. Basicamente, se você seguir esta rota, precisará garantir $USER
uma entrada sã. Na maioria das vezes, provavelmente será, mas você deve ter isso em mente.
Isso pode funcionar para você:
homedir=$( getent passwd "$USER" | cut -d: -f6 )
Isso também funcionará em usuários que não são você. Por exemplo,
homedir=$( getent passwd "someotheruser" | cut -d: -f6 )
getenv
em vez de assumir a localização de passwd
é ainda um passo além do que assumindo a localização da casa é/home/
Parece que você é esse usuário - por que não
echo $HOME
?
Não sei se ajuda, mas colocar o til fora da expressão funciona no ZSH, mas não no Bash:
echo ~`echo $USER`
Depois de fazer o login, execute cd
para ir para o diretório inicial e, em seguida, execute pwd
para imprimir o diretório de trabalho.
echo $HOME
.
echo ~$username
que está tudo bem, mas em sh é necessário eval se é uma variável