2011-12-31 17 views
8

Come avviare un sottoprocesso di bash con un prompt modificato. L'utilizzo di env non funziona:Avvia processo bash con richiesta modificata PS1

env PS1="change >" bash --login 

non funziona. Il risultato dovrebbe essere lo stesso che utilizzare l'esportazione dopo l'avvio del processo:

$ export PS1="change >" 
change > 

~/.bashrc deve essere valutata come al solito.

risposta

7

Un'altra soluzione potrebbe essere:

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

questo mantiene gli alias e co eseguendo e la versione "estesa" degli utenti startupfile.

5

Il comportamento è normale: con --login, bash leggerà i file di inizializzazione e questi ridefiniscono PS1.

Si può provare:

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

Questo funziona per me:

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

ma funziona solo perché .bashrc non fonte di qualsiasi file che ridefiniscono PS1.

+0

Dovrebbe averlo aggiunto a fineprint. Devo eseguire .bashrc. –

+0

Puoi incollarlo? Se si generano file che ridefiniscono PS1, sei praticamente condannato ... – fge

+0

Vedi la soluzione modificata – fge

2

Prova bash --rcfile <(echo "export PS1='somethingelse>'"). Questo utilizza la sostituzione del processo per creare un "file" che contiene l'impostazione PS1 e lo dà a bash. La tua shell attuale dovrebbe supportare questo tipo di sostituzione (bash e zsh do).

+0

Grazie. Questo era il biglietto per me. Ho un sacco di cose in .bashrc, .profile e altri script che interferivano. – CSkau

Problemi correlati