GNU/Linux >> Znalost Linux >  >> Linux

-bash:/bin/cd:Žádný takový soubor nebo adresář - automaticky spustí ls po cd

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

Linux
  1. /usr/bin Vs /usr/local/bin Na Linuxu?

  2. Linux – sloučení /usr/bin A /usr/sbin do /bin (gnu/linux)?

  3. Nainstalujte binární soubory do /bin, /sbin, /usr/bin a /usr/sbin, interakce s --prefix a DESTDIR

  1. Chyba s gradlew:/usr/bin/env:bash:Žádný takový soubor nebo adresář

  2. -bash:/usr/bin/virtualenvwrapper.sh:Žádný takový soubor nebo adresář

  3. chroot selže - nelze spustit příkaz `/bin/bash':Žádný takový soubor nebo adresář

  1. Jak opravit „/usr/bin/dirmngr“:Žádný takový soubor nebo adresář

  2. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  3. sshpass se nepodařilo spustit příkaz:žádný takový soubor nebo adresář