Isso não é realmente possível porque os aliases "existem" somente quando o usuário está logado. Se seus scripts de login .profile etc. definirem alguns aliases, eles os terão quando fizerem login pela primeira vez, mas também source
outros scripts para definir mais aliases ou defini-los na linha de comando.
Você pode, no entanto, listar os aliases que cada usuário terá no momento em que fizerem login com algo parecido com isto:
#! /bin/bash
for user in $(getent passwd | cut -d: -f1) ; do
uid=$(getent passwd "$user" | cut -d: -f3)
if [ "$uid" -ge 1000 ] ; then
ushell=$(getent passwd "$user" | cut -d: -f7)
[ -z "$ushell" ] && ushell='/bin/sh'
echo "aliases for $user:"
if [[ "$ushell" =~ /s?bin/(true|false|sync|ftponly|nologin) ]] ; then
:
elif [[ "$ushell" =~ /s?bin/(t?csh|zsh|s?ash) ]] ; then
su - "$user" $ushell -c 'alias'
elif [[ "$ushell" =~ /s?bin/([bd]ash|m?ksh|sh) ]] ; then
su - "$user" $ushell -c 'alias -p'
fi
echo ; echo
fi
done
Observe que isso pula todos os UIDs abaixo de 1000 - em sistemas debian, ids de usuários normais (ou seja, não-sistema) começam em 1000. Em alguns outros sistemas, eles começam em 500. ajuste para se adequar ao seu sistema.
É possível que alguns shells não listem aliases quando instruídos a executar alias
sem um argumento. Todas as shells que testei (bash, dash, pdksh, mksh, tcsh, zsh) estavam bem, mas se você encontrar uma que não terá que lidar com isso com algo como if [ "$ushell" = "/bin/oddshell" ; then ... fi