2011-01-03 8 views
11

Quiero crear un alias para pagsh que me proporcionará inmediatamente el ticket kerberos de administrador.Bash, ejecute el comando pero continúe con la sesión interactiva

El problema es que no puedo encontrar la forma de especificar un comando para ejecutar el bash, pero aún continúo con la sesión interactiva después de que el comando finaliza.

Mi toma actual es:

alias admin=pagsh -c "bash -c \"kinit [email protected]\"" 

pero lógicamente bash termina justo después de kinit está hecho. ¿Cómo puedo presionar un comando personalizado en una mendicidad de una sesión interactiva de bash? Todavía necesito para funcionar normalmente .bashrc, por lo tanto, no puedo usar --rcfile

Respuesta

10

Mi consejo sería utilizar una costumbre bashrc presentar ante --rcfile que las fuentes de su .bashrc, por ejemplo:

alias admin=pagsh -c "bash --rcfile myrc"

myrc:

source ~/.bashrc 
kinit [email protected] 
+1

Oh, soy tan tonto :-D Esa es una excelente idea. –

+0

Me alegro de poder ayudar :) – OneOfOne

+0

presumo debe decir 'alias admin = pagsh -c "fiesta --rcfile myrc"' decir. bash en lugar de bashrc –

1

¿Qué pasa con?

alias admin='pagsh -c "bash -c \"kinit [email protected]; exec bash\""' 

o incluso

alias admin='pagsh -c "kinit [email protected]; exec bash"' 

podría funcionar. (No tengo funcionando el entorno de openafs para probarlo correctamente.)

2

Si lo que necesita es solo una línea o dos, puede usar la función cool bash de "Sustitución de procesos" [1] para proporcionarla directamente en la línea de invocación. p.ej. (Para ejecutar una fiesta en un virtualenv pitón específico):

bash --rcfile <(echo '. ./pyvenv/bin/activate') 

múltiples líneas no son un problema, ni está usando VARs o ayudantes:

bash --rcfile <(echo echo "Starting at `date`"; echo cd $HOME) 

[1] man bash y busque "Sustitución de procesos ". Tenga en cuenta que esto no es compatible con todos los sistemas, pero debería funcionar en todos los sistemas Linux.

Cuestiones relacionadas