GNU/Linux >> Znalost Linux >  >> Linux

Pointa externího příkazu `cd`?

Jak je uvedeno v této jemné odpovědi, systémy POSIX mají externí binární cd kromě vestavěného pláště. V OS X 10.8 je to /usr/bin/cd . Nemůžete jej používat jako vestavěné cd protože se ukončí okamžitě po změně vlastního pracovního adresáře. K jakému účelu slouží?

Přijatá odpověď:

Slouží především k zajištění toho, aby byla POSIXová truhla nástrojů k dispozici uvnitř i vně shellu (viz zdůvodnění POSIX pro jejich vyžadování).

Pro cd , to není příliš užitečné, ale všimněte si, že cd mění adresáře, ale má další vedlejší účinky:vrací stav ukončení, který pomáhá určit, zda jste schopni chdir() do tohoto adresáře nebo ne a zobrazí užitečnou chybovou zprávu vysvětlující, proč nemůžete chdir() když nemůžete.

Příklad:

dirs_i_am_able_to_cd_into=$(find . -type d -exec cd {} ; -print)

Dalším potenciálním vedlejším efektem je automatické připojení adresáře.

Na několika systémech je většina externích příkazů pro standardní vestavěné shelly implementována jako symbolický odkaz na stejný skript, který dělá:

#! /bin/sh -
"${0##*/}" "[email protected]"

To znamená spustit shell a spustit v něm vestavěný.

Některé jiné systémy (jako GNU) mají nástroje jako skutečné spustitelné příkazy, což může vést k nejasnostem, pokud se chování liší od verze vestavěné do shellu.


Linux
  1. Jak přiřadit výstup příkazu proměnné shellu?

  2. Jak získat externí IP adresu ve skriptu Shell?

  3. Jaký je rozdíl mezi získáním výstupu příkazu pomocí `command` a $(command) v Shell?

  1. Přizpůsobení Bash Shell:Tučné/barva Příkaz?

  2. Jaký je rozdíl mezi &> a >&v bash?

  3. Jak spustit příkaz Vim z shellu?

  1. Zvládněte příkaz Linux ls

  2. Aliasy příkazového řádku v prostředí Linux

  3. Přizpůsobení prostředí Bash