J'essaie de créer un script simple qui, entre autres choses, créera un sous-shell:
#!/bin/sh
# setup
"${@:-$SHELL}"
# teardown
La question est: je dois changer l'invite par défaut, donc par exemple:
$ # shell par défaut
$ ./myscript
(myscript) $ #
subshell (myscript) $ exit
$
J'ai essayé de changer PROMPT
et PS1
, mais aucun de ces travaux. Comment puis je faire ça?
PS: J'ai besoin d'une solution qui fonctionne à la fois sur Bash et ZSH, si possible.
bash
seulement.Réponses:
Je pense que vous pouvez créer un sous-shell avec une invite différente comme celle-ci:
Exemple
Env. Actuel:
Dans le sous-shell:
Retour à la coque d'origine:
la source
here string
au lieu de la substitution de processus. par exemple<<< "PS1..."
.La raison pour laquelle il ne fonctionne pas peut - être parce que lorsque vous chargez la coque (qui devrait être par exemple .:
/bin/bash
), il finira par rechargeant ses fichiers de configuration, qui comprennent les variables d'environnement pour l'invite (par exemple .:$HOME/.bashrc
) après avoir été passé le variables d'environnement que vous voulez - ainsi vos variables sont rejetées.Vous voudrez peut-être vérifier les options du shell pour charger des fichiers de configuration personnalisés (par exemple:
--rcfile
dans Bash IINM) et les utiliser ainsi que\env
pour passer les variables d'environnement que vous souhaitez. Le problème est qu'une fois que vous faites cela, le tir du sous-shell devient dépendant du shell.( CAVEAT EMPTOR : Je ne considère pas que ce soit une réponse pour le moment - en particulier, je n'ai encore rien essayé dans mon système.)
la source