Não, nem todos fazem a mesma coisa. O sinalizador -x é ortogonal aos sinalizadores -g , -l e -u . O primeiro simplesmente define o atributo de exportação no var. Os últimos três definem o escopo da var. Você pode ter um global, unexported, VAR e dentro de uma função set -lx VAR value para criar uma instância no escopo local que é exportada. Quando o controle retorna da função, o escopo global VAR volta a existir e não será exportado.
Se você estiver usando uma versão recente (2.7, talvez 2.6), você pode fazer set --show VAR para exibir os valores em todos os três escopos e se cada um deles é exportado ou não.