2011-01-03 6 views
11

Ich möchte einen Alias ​​für pagsh erstellen, die mir sofort das Admin Kerberos-Ticket erhalten wird.Bash, Befehl ausführen, aber mit interaktiver Sitzung fortfahren

Das Problem ist, dass ich nicht herausfinden kann, wie ein Befehl für die bash ausgeführt wird, aber weiterhin mit der interaktiven Sitzung nach dem Befehl ausgeführt wird.

Mein aktueller Schuss ist:

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

aber bash logisch endet direkt nach kinit erfolgt. Wie kann ich einen benutzerdefinierten Befehl in eine interaktive Sitzung der Bash befördern? Ich brauche noch normal laufen Bashrc, also ist nicht --rcfile

Antwort

10

Mein Rat mit --rcfile einem benutzerdefinierten verwenden kann bashrc würde verwenden, dass die Quellen .bashrc, ex:

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

myrc:

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

Oh ich bin so dumm :-D Das ist eine ausgezeichnete Idee. –

+0

Ich bin froh, dass ich helfen konnte :) – OneOfOne

+0

Ich nehme an, es sollte lesen 'alias admin = pagsh -c" bash --rcfile myrc "' dh. bash statt bashrc –

1

Was ist mit Folgen?

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

oder sogar

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

funktionieren könnte. (Ich habe openafs Umgebung nicht um es richtig zu testen.)

2

Wenn Sie nur eine oder zwei Zeilen benötigen, können Sie die cool Bash-Funktion von "Process Substitution" [1] verwenden, um es direkt an die Aufrufzeile. z.B. (Einen schlag in einem bestimmten Python virtualenv laufen):

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

mehrere Zeilen sind kein Problem, noch verwendet Vars oder Helfer:

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

[1] man bash und sucht „Process Substitution ". Beachten Sie, dass dies nicht auf allen Systemen unterstützt wird, sondern unter allen Linux-Betriebssystemen.

Verwandte Themen