O Bash tem variáveis internas exportadas para o nome de usuário e o diretório pessoal do usuário. Se você estiver chamando seu script quando o usuário fizer login em ~/.bash_profile
, por exemplo, você não precisará passar os valores como argumentos para seu script.
Você pode usar $USER
e $HOME
, pois eles já estão definidos e disponíveis no ambiente do script, pois estão marcados como exportados. Acho que a expansão do til deve ser mais uma conveniência de linha de comando do que algo usado em scripts.
DIR="$HOME/Library/Caches"
cd "$DIR" || rm "$DIR" && echo "Removed misdirected Cache folder" && exit 1
Pode ser mais confiável obter o diretório pessoal do usuário de uma das seguintes formas:
getent passwd $USER | awk -F: '{print $(NF - 1)}'
ou
awk -F: -v user=$USER 'user == $1 {print $(NF - 1)}' /etc/passwd
Além disso, exit 0
indica sucesso. De certa forma, seu processo é bem-sucedido ao excluir o diretório, mas o fato de precisar ser excluído é um tipo de erro. De qualquer forma, se você exit 0
neste ponto não conseguirá dizer a diferença quando o script sair depois do echo
final, já que o código de saída provavelmente será zero.