Yo personalmente uso la siguiente bash
función para hacer esto:
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"
}
Esto es lo que hace, en orden:
- Cree un directorio temporal (para usar como nuestro directorio de trabajo en el entorno limpio);
- Cree un archivo temporal (para usar como nuestro
bash
archivo rc);
- En el archivo rc, agregue líneas que:
- Establezca el
PS1
aviso en el terminador del aviso seguido de un espacio, que lo mantiene relevante en caso de que deseemos tener una copia de nuestra salida en el sitio de Preguntas y Respuestas;
- Cambie al directorio temporal que creamos.
- Invocar una nueva instancia de
bash
, que:
- Inicialmente tiene un entorno vacío excepto por
$HOME
y $TERM
( env - ...
);
- Lee su archivo rc del archivo temporal que creamos anteriormente (
--rcfile
).
- Una vez que bash haya salido, elimine los archivos temporales que creamos.
Obviamente, esto no es totalmente infalible, es decir, aún puede acceder a otras partes de su sistema. Sin embargo, esto proporciona un entorno temporal limpio que puede usar para las pruebas.