
私は有名なUnix中心のQ&Aサイトに関する質問によく回答し、多くの回答でシェルの使用例を提供しますbash
。ただし、これを行うたびに、すべての手順が説明され文書化されていることを確認するために、クリーンな環境を作成するプロセスを手動で実行する必要があります。このプロセスをどのように簡単にすることができますか?理想的には、コマンドを入力してクリーンな環境を確保し、完了時にその一時環境のすべての痕跡を削除したいと思います。
答え1
個人的には、私はこれを行うために次の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"
}
実行される操作は次のとおりです(順番に)。
- 一時ディレクトリを作成します(クリーン環境で作業ディレクトリとして使用)。
- 一時ファイルを作成します(rcファイルとして使用
bash
)。 - rc ファイルに次の行を追加します。
- プロンプトを
PS1
プロンプトターミネーターの後に空白に設定すると、Q&A サイトから出力コピーを取得したい場合は関連性が維持されます。 - 作成した一時ディレクトリに切り替えます。
- プロンプトを
- 呼び出しの新しいインスタンスは
bash
次のとおりです。$HOME
最初は、($TERM
)を除いて空の環境がありますenv - ...
。- 以前に作成した一時ファイル()
--rcfile
からrcファイルを読み込みます。
- Bashが終了した後、私たちが作成した一時ファイルを削除します。
明らかに、これは完全に安全ではありません。つまり、システムの他の部分にアクセスし続けることができます。ただし、これはテストに使用できるきちんとした準備環境を提供します。
答え2
chroot
1つの方法は、仮想マシンを使用する別の方法です。 LVにchroot環境を構築し、スナップショットを作成し、タスクを実行して、スナップショットの状態に戻すことができます。
または - 仮想マシン(ディスクスナップショット)に対して同じことを行い、すべての変更を元に戻します。
私は通常、新しくインストールされた仮想マシンを使用してこれを行います(VirtualBoxとkickstartまたはPXEブートでautoyastを使用)。