GNU/Linux >> Znalost Linux >  >> Linux

Jak vytvořit prostředí Clean Shell pro dočasné použití?

Často odpovídám na oblíbeném webu pro otázky a odpovědi zaměřeném na Unix a v mnoha svých odpovědích uvádím příklady pomocí bash skořápka. Pokaždé, když to dělám, však musím ručně projít procesem vytváření čistého prostředí, abych se ujistil, že každý krok je započítán a zdokumentován. Jak mohu tento proces zjednodušit? V ideálním případě chci napsat jediný příkaz a získat čisté prostředí a poté, co skončím, nechat odstranit všechny stopy tohoto dočasného prostředí.

Přijatá odpověď:

Osobně používám následující bash funkce k tomu:

so() {
    local tmpdir="$(mktemp -d)"
    local tmprc="$(mktemp)"
    cat > "$tmprc" << EOF
PS1='\$ '
cd "$tmpdir"
EOF
    env - HOME="$HOME" TERM="$TERM" bash --rcfile "$tmprc"
    rm -rf "$tmpdir" "$tmprc"
}

Dělá to v tomto pořadí:

  • Vytvořte dočasný adresář (k použití jako náš pracovní adresář v čistém prostředí);
  • Vytvořte dočasný soubor (pro použití jako bash rc soubor);
  • Do souboru rc přidejte řádky, které:
    • Nastavte PS1 výzva k ukončení výzvy následovaná mezerou, která ji udržuje relevantní v případě, že chceme mít kopii našeho výstupu na webu otázek a odpovědí;
    • Změňte se do dočasného adresáře, který jsme vytvořili.
  • Vyvolejte novou instanci bash , který:
    • Zpočátku má prázdné prostředí kromě $HOME a $TERM (env - ... );
    • Načte svůj rc soubor z dočasného souboru, který jsme vytvořili dříve (--rcfile ).
  • Jakmile bash skončí, odeberte dočasné soubory, které jsme vytvořili.

Zjevně to není zcela spolehlivé, to znamená, že stále máte přístup k jiným částem vašeho systému. To však poskytuje čisté dočasné prostředí, které můžete použít pro testování.


Linux
  1. Jak používat příkazy historie Bash

  2. Jak používat šifrované heslo ve skriptu Linux Bash Shell

  3. Jak nastavit/vytvořit proměnné prostředí a prostředí v Linuxu

  1. Jak vytvořit dočasný soubor ve skriptu Shell?

  2. Jak používat rozšíření shellu pro generování tokenů shellu pod Linuxem

  3. Jak na to:Neomezená historie Bash/shell?

  1. Jak používat příkaz Bash read

  2. Jak mohu v Bash používat společně příkazy watch a jobs?

  3. Jak najdu nápovědu pro bodový příkaz `.` v *nix?