Il tuo sistema (come molti sistemi Unix) non ha un cd
esterno comando (almeno non in quel percorso). Anche se ne avesse uno, il ls
ti darebbe l'elenco delle directory della directory originale. Un comando esterno non può mai cambiare la directory per il processo chiamante (la tua shell).
Rimuovi l'alias dall'ambiente con unalias cd
(e rimuovi anche la sua definizione da qualsiasi file di inizializzazione della shell a cui potresti averlo aggiunto).
Con una funzione di shell, puoi farlo funzionare come cd
normalmente lo fa, con un'ulteriore invocazione di ls
alla fine se il cd
riuscito:
cd () {
command cd "[email protected]" && ls -lah
}
o,
cd () { command cd "[email protected]" && ls -lah; }
Questo chiamerebbe il cd
comando integrato nella tua shell con gli stessi argomenti della riga di comando che hai fornito alla funzione. Se il cambio di directory ha avuto successo, il file ls
correrebbe.
L'command
Il comando impedisce alla shell di eseguire la funzione in modo ricorsivo.
La definizione della funzione (come scritto sopra) andrebbe nel file di avvio della tua shell. Con bash
, potrebbe essere ~/.bashrc
. La definizione della funzione sarebbe quindi attiva nella prossima nuova sessione di shell interattiva . Se vuoi che sia attivo ora , quindi esegui la definizione della funzione così com'è al prompt della shell interattiva, che la definirà all'interno della tua attuale sessione interattiva.
Sui sistemi in cui cd
è disponibile come comando esterno, anche questo comando non cambia la directory per il processo chiamante. L'unico uso reale di tale comando è fornire la conformità POSIX e fungere da test per verificare se sarebbe possibile cambiare directory in una particolare .
Sono stato in grado di risolverlo rimuovendo nuovamente l'alias con unalias cd
Ciò è accaduto perché:
$ type cd
cd is a shell builtin