Eu pessoalmente uso a seguinte função bash para fazer isso:
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"
}
Aqui está o que faz, por ordem:
- Crie um diretório temporário (para usar como nosso diretório de trabalho no ambiente limpo);
- Crie um arquivo temporário (para usar como nosso arquivo
bashrc); - No arquivo rc, adicione linhas que:
- Defina o prompt
PS1para o terminador de prompt, seguido de um espaço, que o mantém relevante caso desejemos ter uma cópia de nossa saída no site de perguntas e respostas; - Mude para o diretório temporário que criamos.
- Defina o prompt
- Invoque uma nova instância de
bash, que:- Inicialmente, tem um ambiente vazio, exceto
$HOMEe$TERM(env - ...); - Lê seu arquivo rc do arquivo temporário que criamos anteriormente (
--rcfile).
- Inicialmente, tem um ambiente vazio, exceto
- Depois que o bash sair, remova os arquivos temporários que criamos.
Obviamente, isso não é totalmente infalível, ou seja, você ainda pode acessar outras partes do seu sistema. Isso, no entanto, fornece um ambiente temporário limpo que você pode usar para testes.