2011-12-31 7 views
8

¿Cómo comienzo un subproceso bash con un aviso modificado? El uso de env no funciona:Iniciar el proceso de bash con aviso modificado PS1

env PS1="change >" bash --login 

no funciona. El resultado debe ser el mismo que el uso de exportación después de que se inicie el proceso:

$ export PS1="change >" 
change > 

~/.bashrc tiene que ser evaluado como de costumbre.

Respuesta

7

Otra solución sería:

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

Esto mantiene el alias y co mediante la ejecución y la versión "extendida" de los usuarios startupfile.

5

El comportamiento es normal: con --login, bash leerá sus archivos de inicialización y estos redefinirán PS1.

Puede intentar:

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

Esto funciona para mí:

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

pero sólo funciona porque no Bashrc fuente de cualquier archivo que redefinen PS1.

+0

Debería haber agregado eso a la impresión. Tengo que ejecutar .bashrc. –

+0

¿Puedes pegarlo? Si obtiene archivos que redefinen PS1, está condenado ... – fge

+0

Vea la solución editada – fge

2

Probar bash --rcfile <(echo "export PS1='somethingelse>'"). Esto utiliza la sustitución del proceso para crear un "archivo" que contiene la configuración de PS1 y lo da a bash. Su shell actual debería soportar este tipo de sustitución (bash y zsh do).

+0

Gracias. Este fue el boleto para mí. Tengo un montón de cosas en .bashrc, .profile y otros scripts que interfieren. – CSkau

Cuestiones relacionadas