一時的に使用するためのクリーンなシェル環境を作成するにはどうすればよいですか?


15

私は、Unixに焦点を当てた人気のQ&Aサイトで頻繁に回答し、多くの回答でbashシェルを使用した例を提供しています。ただし、これを行うたびに、クリーンな環境を作成するプロセスを手動で実行して、すべての手順が説明され、文書化されていることを確認する必要があります。このプロセスをより簡単にするにはどうすればよいですか?理想的には、1つのコマンドを入力してクリーンな環境を取得し、その一時的な環境の痕跡をすべて完了後に削除することを考えています。


回答:


10

bashこれを行うには、個人的に次の関数を使用します。

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"
}

以下に順番に実行します。

  • 一時ディレクトリを作成します(クリーンな環境で作業ディレクトリとして使用するため)。
  • 一時ファイルを作成します(bashrcファイルとして使用します)。
  • rcファイルで、次の行を追加します。
    • PS1プロンプトをプロンプトターミネータに設定し、その後にスペースを入力します。これにより、Q&Aサイトに出力のコピーが必要な場合に関連性が保たれます。
    • 作成した一時ディレクトリに移動します。
  • の新しいインスタンスを呼び出しますbash
    • 最初は$HOMEand $TERMenv - ...)以外の空の環境があります。
    • 前に作成した一時ファイル(--rcfile)からrcファイルを読み取ります。
  • bashが終了したら、作成した一時ファイルを削除します。

明らかにこれは完全に完全なわけではありません。つまり、システムの他の部分にアクセスできます。ただし、これにより、テストに使用できるクリーンな一時環境が提供されます。


使ってみましたscriptか?
h3rrmiller

@ h3rrmiller-はい。ただし、優先的に使用することはありません。
クリスダウン

2

chrootVMを使用することは別の方法です。LV上にchroot環境を構築し、スナップショットを作成し、何でも実行してから、スナップショット状態に戻すことができます。

または-VM(ディスクスナップショット)で同じことを行い、その後すべての変更を元に戻します。

私は通常、新しくインストールしたVMでこれを行います(VirtualBoxとキックスタートを使用するか、PXEブートでautoyastを使用します)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.