¿El nombre de usuario oculto debe tener la misma longitud que el nombre de usuario original? Así:
Alices-MacBook:~ *****
Bobs-MacBook:~ ***
El siguiente fragmento de código debería hacer el trabajo (y, como extra, también ocultará el nombre de host). Añádelo a tu ~/.bash_profile, o a cualquier lugar en el que configures PS1. (Yo creé un archivo temporal - test.sh - para probar, y luego puse la fuente de ese archivo - '. ./test.sh'. Si algo ha ido espectacularmente mal, y he hecho mi símbolo del sistema ilegible, podría simplemente reiniciar el terminal y volver a mi antiguo símbolo del sistema).
PROMPT_COMMAND=__prompt_command
__hide_string()
{
echo "$1" | sed 's/./\*/g'
}
__prompt_command()
{
PS1="$(__hide_string $HOSTNAME):\W $(__hide_string $USER)\$"
}
Esto reemplazará cada carácter en el nombre de usuario con un "*" (también lo hará para el nombre de host, para mostrar la reutilización de la función). Considero que esto es menos que ideal - la función es llamada (dos veces - una para el usuario, una para el nombre de host) cada vez que se muestra el prompt (aunque el nombre de usuario no haya cambiado): con un poco de hacking debería ser posible modificarlo para que sólo llame a la función '__hide_string' cuando PS1 está activado (es decir, en el inicio de sesión).
Explicación: la función __prompt_command que hemos definido establece PS1 cada vez que se muestra el prompt. (Esto es probablemente exagerado, pero mantiene las cosas 'dinámicas'). PS1 debería ser familiar; lo único nuevo es que ' \h ' y ' \u ' se sustituyen por llamadas a la función __hide_string (y utilizan $HOSTNAME y $USER como argumentos). __hide_string es la parte divertida: hace eco de su argumento a sed, que sustituye cada carácter individual por un '*'.