Váš systém (jako mnoho unixových systémů) nemá externí cd
příkaz (alespoň ne na této cestě). I kdyby měl jeden, ls
by vám poskytl výpis adresáře původního adresáře. Externí příkaz nemůže nikdy změnit adresář pro volající proces (váš shell).
Odstraňte alias z prostředí pomocí unalias cd
(a také odstraňte jeho definici ze všech inicializačních souborů shellu, do kterých jste jej případně přidali).
Pomocí funkce shellu můžete přimět jej, aby fungoval jako cd
obvykle ano, s dalším vyvoláním ls
na konci cd
podařilo:
cd () {
command cd "[email protected]" && ls -lah
}
nebo,
cd () { command cd "[email protected]" && ls -lah; }
To by zavolalo cd
příkaz zabudovaný do vašeho shellu se stejnými argumenty příkazového řádku, které jste zadali funkci. Pokud byla změna adresáře úspěšná, zobrazí se ls
by běžel.
command
příkaz zastaví shell v provádění funkce rekurzivně.
Definice funkce (jak je napsána výše) by se dostala do spouštěcího souboru vašeho shellu. S bash
, může to být ~/.bashrc
. Definice funkce by pak byla aktivní v příští nové interaktivní shellové relaci . Pokud chcete, aby byl aktivní teď , pak spusťte definici funkce tak, jak je, na výzvu interaktivního shellu, která ji definuje v rámci vaší aktuální interaktivní relace.
Na systémech, kde je cd
je k dispozici jako externí příkaz, tento příkaz také nemění adresář pro volající proces. Jediným skutečným využitím takového příkazu je zajistit shodu s POSIX a fungovat jako test, zda by bylo možné změnit adresář na konkrétní .
Podařilo se mi to vyřešit opětovným odstraněním aliasu pomocí unalias cd
Stalo se to, protože:
$ type cd
cd is a shell builtin