Seja por design ou supervisão, parece que o teste para se você digitou um nome de diretório não pesquisa a variável CDPATH :
execute.cmd.c , função execute_simple_command :
if (autocd && interactive && words->word && is_dirname (words->word->word))
{
words = make_word_list (make_word ("cd"), words);
xtrace_print_word_list (words, 0);
goto run_builtin;
}
A definição de is_dirname está no mesmo arquivo de origem:
/* Return 1 if the file found by searching $PATH for PATHNAME, defaulting
to PATHNAME, is a directory. Used by the autocd code below. */
static int
is_dirname (pathname)
char *pathname;
{
char *temp;
int ret;
temp = search_for_command (pathname, 0);
ret = (temp ? file_isdir (temp) : file_isdir (pathname));
free (temp);
return ret;
}
Com isso, parece que autocd encontrará diretórios em PATH , mas testei com X11 (para /usr/bin/X11/ ) e recebi o erro X11: No such file or directory .