Я лично использую следующую 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"
}
Вот что он делает по порядку:
- Создать временный каталог (использовать в качестве нашего рабочего каталога в чистой среде);
- Создайте временный файл (для использования в качестве нашего
bash
rc-файла);
- В файле rc добавьте строки, которые:
- Установите
PS1
для подсказки терминатор подсказки, за которым следует пробел, который сохраняет его актуальность на тот случай, если мы захотим получить копию нашего вывода на сайте вопросов и ответов;
- Перейдите во временный каталог, который мы создали.
- Вызвать новый экземпляр
bash
, который:
- Изначально имеет пустое окружение, кроме
$HOME
and $TERM
( env - ...
);
- Читает его rc-файл из временного файла, который мы создали ранее (
--rcfile
).
- После выхода из bash удалите созданные нами временные файлы.
Очевидно, что это не совсем надежно, то есть вы можете получить доступ к другим частям вашей системы. Это, однако, обеспечивает чистую временную среду, которую вы можете использовать для тестирования.