Je réponds fréquemment sur un site de questions-réponses populaire axé sur Unix, et dans plusieurs de mes réponses, je fournis des exemples en utilisant le bash
coquille. Cependant, chaque fois que je fais cela, je dois suivre manuellement le processus de création d'un environnement propre pour m'assurer que chaque étape est prise en compte et documentée. Comment puis-je simplifier ce processus ? Je cherche idéalement à taper une seule commande et à obtenir un environnement propre, et à supprimer toutes les traces de cet environnement temporaire une fois que j'ai terminé.
Réponse acceptée :
J'utilise personnellement le bash
suivant fonction pour faire ceci :
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"
}
Voici ce qu'il fait, dans l'ordre :
- Créer un répertoire temporaire (à utiliser comme répertoire de travail dans l'environnement propre) ;
- Créer un fichier temporaire (à utiliser comme notre
bash
fichier rc); - Dans le fichier rc, ajoutez des lignes qui :
- Définir le
PS1
invite au terminateur d'invite suivi d'un espace, ce qui le maintient pertinent au cas où nous voudrions avoir une copie de notre sortie sur le site de questions et réponses ; - Passez dans le répertoire temporaire que nous avons créé.
- Définir le
- Invoquer une nouvelle instance de
bash
, qui :- A initialement un environnement vide à l'exception de
$HOME
et$TERM
(env - ...
); - Lit son fichier rc à partir du fichier temporaire que nous avons créé précédemment (
--rcfile
).
- A initialement un environnement vide à l'exception de
- Une fois bash fermé, supprimez les fichiers temporaires que nous avons créés.
Évidemment, ce n'est pas totalement infaillible, c'est-à-dire que vous pouvez toujours accéder à d'autres parties de votre système. Cela fournit cependant un environnement temporaire propre que vous pouvez utiliser pour les tests.