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
bash
rc); - No arquivo rc, adicione linhas que:
- Defina o prompt
PS1
para 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
$HOME
e$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.