2011-12-31 2 views
8

Comment démarrer un sous-processus bash avec une invite modifiée. L'utilisation de env ne fonctionne pas:Démarrer le processus bash avec l'invite modifiée PS1

env PS1="change >" bash --login 

ne fonctionne pas. Le résultat devrait être le même que l'utilisation de l'exportation après que le processus est lancé:

$ export PS1="change >" 
change > 

~/.bashrc doit être évalué comme d'habitude.

Répondre

7

Une autre solution serait:

bash --rcfile <(cat ~/.bashrc; echo 'PS1="change > "') 

Cela permet de maintenir les alias et co en exécutant et version "étendue" des utilisateurs startupfile.

5

Le comportement est normal: avec --login, bash lira vos fichiers d'initialisation et ceux-ci redéfiniront PS1.

Vous pouvez essayer:

(source .bashrc; env PS1="change >" bash --norc) 

Cela fonctionne pour moi:

[email protected] ~ $ grep FOO ~/.bashrc 
export FOO=bar 
[email protected] ~ $ (source ~/.bashrc; env PS1="change> " bash --norc) 
change> echo $FOO 
bar 

Mais il ne fonctionne que parce que .bashrc ne lit aucun fichier qui redéfinissent PS1.

+0

Devrait avoir ajouté cela à l'amende. Je dois lancer .bashrc. –

+0

Pouvez-vous le coller? S'il source des fichiers qui redéfinissent PS1, vous êtes à peu près condamné ... – fge

+0

Voir la solution éditée – fge

2

Essayez bash --rcfile <(echo "export PS1='somethingelse>'"). Cela utilise la substitution de processus pour créer un "fichier" qui contient le paramètre PS1 et le donne à bash. Votre shell actuel devrait supporter ce genre de substitution (bash et zsh do).

+0

Merci. C'était le ticket pour moi. J'ai un tas de choses dans .bashrc, .profile, et d'autres scripts qui interfèrent. – CSkau

Questions connexes