Dernière trouvaille :

Outre \cmd qui permet de court-circuiter les alias.
Outre la formule (peu élégante, plus système D, mais qui a le mérite de fonctionner) qui consiste à avoir un ou plusieurs / dans la commande, permettant de désigner ainsi EXCLUSIVEMENT un programme "externe".

Je découvre maintenant (en parcourant la doc de Bash MAIS c'est aussi valable pour Ksh) que l'on peut utiliser la commande command, qui sert à court-circuiter les alias ET les fonctions MAIS continue à chercher dans les commandes internes (builtin) et les commandes externes.

Exemple 1 :

$ type -a ls
ls is aliased to `echo alias ls'
ls is a function
ls () 
{ 
    echo fonction ls
}
ls is /bin/ls

$ ls
alias ls

$ \ls
fonction ls

$ command ls
fichier1
fichier2
	:		exécution de /bin/ls

Exemple 2 :

$ type -a dirs
dirs is a shell builtin

$ alias dirs="echo alias dirs"

$ function dirs
> {
> echo fonction dirs
> }

$ sudo sh -c "echo 'echo programme externe dirs' > /usr/local/bin/dirs"

$ sudo chmod 755 /usr/local/bin/dirs 

$ type -a dirs
dirs is aliased to `echo alias dirs'
dirs is a function
dirs () 
{ 
    echo fonction dirs
}
dirs is a shell builtin
dirs is /usr/local/bin/dirs

$ dirs
alias dirs

$ \dirs
fonction dirs

$ command dirs
~

$ /usr/local/bin/dirs 
programme externe dirs

Je profite de ce dernier exemple pour faire un détour sur la commande builtin.
Elle me paraît superflue (si ce n'est que son nom est très clair, très évocateur, sur sa finalité) car si la commande command apporte une valeur ajoutée par rapport à la commande builtin (avec tout un tas d'options), il me semble en revanche que le contraire n'est pas vrai.

En effet si l'on exécute l'expression suivante (dans le contexte de l'exemple 2) :

$ builtin dirs
~

On obtient exactement le même résultat qu'en employant la commande command :

$ command dirs
~

Surtout ce qui me semble être, sinon une preuve, une assez bonne démonstration :

$ type -a dirs
dirs is a shell builtin

$ dirs
~/UN/CHEMIN

$ function dirs
> {
> echo je suis dans la fonction dirs qui execute la commande integree dirs
> command dirs
> }

$ dirs
je suis dans la fonction dirs qui execute la commande integree dirs
~/UN/CHEMIN

C'est du moins mon constat jusqu'à plus ample informé.

Exemple 3 (MAUVAIS EXEMPLE QUE JE NE TERMINE PAS CAR select N'EST PAS UNE SHELL BUILTIN MAIS UN SHELL KEYWORD - AU MÊME TITRE QUE for, while, until, if, etc) :

$ type -a select
select is a shell keyword

$ alias select="echo alias select"

$ function select
> {
> echo fonction select
> }

$ sudo sh -c "echo 'echo programme externe select' > /usr/local/bin/select"

$ sudo chmod 755 /usr/local/bin/select

$ type -a select
select is aliased to `echo alias select'
select is a shell keyword						<=  AVANT de vérifier l'existence d'une fonction
select is a function
select () 
{ 
    echo fonction select
}
select is /usr/local/bin/select

$ select
alias select

$ \select
fonction select

$ command select
programme externe select