2011-01-03 15 views
11

Voglio creare un alias per pagsh che mi farà ottenere immediatamente il ticket admin kerberos.Bash, esegui il comando ma continua con la sessione interattiva

Il problema è che non riesco a capire come specificare un comando per lo bash da eseguire, ma continuare comunque con la sessione interattiva dopo che il comando è stato eseguito.

Il mio colpo di corrente è:

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

ma bash finisce logicamente subito dopo kinit è fatto. Come posso spingere un comando personalizzato in una supplica di una sessione interattiva di bash? Ho ancora bisogno di eseguire .bashrc normalmente, quindi non posso usare --rcfile

risposta

10

Il mio consiglio sarebbe utilizzando una consuetudine bashrc depositare presso --rcfile che le fonti vostro .bashrc, ex:

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

myrc:

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

Oh, sono così stupido MrGreen È un'idea eccellente. –

+0

Felice di poter aiutare :) – OneOfOne

+0

Suppongo che dovrebbe leggere 'alias admin = pagsh -c" bash --rcfile myrc "' ie. bash invece di bashrc –

1

Che dire dopo?

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

o anche

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

potrebbe funzionare. (Non ho un ambiente operativo funzionante per testarlo correttamente.)

2

Se ciò di cui hai bisogno è solo una o due righe, puoi utilizzare la funzione di bash di "Sostituzione del processo" [1] per fornirlo correttamente la linea di invocazione. per esempio. (Per eseguire un colpo in una specifica virtualenv python):

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

più righe non sono un problema, e non sta usando Vars o aiutanti:

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

[1] man bash e cercare "Sostituzione di processo ". Nota che questo non è supportato su tutti i sistemi, ma dovrebbe funzionare su tutto Linux.

Problemi correlati