Melhor usar getent passwd do que ler /etc/passwd diretamente. getent também funciona com LDAP, NIS e outros. Eu acho que existe na maioria dos Unixes. (Meu OS X não tem isso, mas ele não tem minha conta em /etc/passwd , então ...)
name=$(getent -- passwd "$USER" | cut -d: -f5)
O processamento de strings pode ser feito com a expansão de parâmetros do shell , estes são compatíveis com POSIX:
name=${name%%,*} # remove anything after the first comma
name=${name%,,,} # or remove just a literal trailing ",,,"
name=${name##* } # remove from start until the last space
echo "hello $name"
Use ${name#* } para remover até o primeiro espaço. (Só espero que ninguém tenha um sobrenome de duas partes, com espaço intermediário).
O cut também pode ser substituído por divisão de palavras ou read , definindo IFS como dois-pontos.