come fare alias ssh-add / bin / bash in bashrc?


0

come non funziona?

alias push-bb="ssh-agent /bin/bash && ssh-add ~/.ssh/bitbucker_rsa && git push"

Presumo che annulli in /bin/bashparte?

Risposte:


1

Immagino che ti aspetti &&di lavorare in questo modo:

  1. fingere che sia ssh-agent /bin/bashstato digitato
  2. fingere che sia Enterstato premuto
  3. fingere che sia ssh-add ~/.ssh/bitbucket_rsastato digitato
  4. fingere che sia Enterstato premuto ...

Ma non è così che funziona. Gli alias non sono "input tastiera falsi" e &&non sono "chiavi invio false". La shell li interpreta direttamente come comandi . Quindi funziona davvero così:

  1. correre ssh-agent /bin/bash
  2. aspetta che esca
  3. correre ssh-add ~/.ssh/bitbucket_rsa
  4. aspetta che esca ...

Pertanto, l'alias non "annulla" al passaggio 1.

Esso ha effettivamente iniziare una nuova copia di / bin / bash, e ora avete in esecuzione bash all'interno bash - hanno appena sembrano identici gli uni agli altri, in modo da non ha notarlo. Ma dai un'occhiata più da vicino ps xfe vedrai:

123 xterm
 124 bash           waiting for its child (124 ssh-agent) to exit
   678 ssh-agent    waiting for its child (679 bash) to exit
     679 bash       waiting for keyboard input

Quindi invece l'alias è in attesa del completamento del passaggio 1 .

Se hai digitato in exitquesto momento, la seconda bash verrebbe chiusa (insieme a ssh-agent) e il tuo alias continuerebbe da quel punto e tutti i restanti comandi verrebbero interpretati nella shell bash originale .


Invece, probabilmente vuoi questo:

alias push-bb="ssh-agent /bin/bash -c 'ssh-add ~/.ssh/bitbucker_rsa && git push'"

Qui, invece di attendere l'input da tastiera, al "nuovo" bash viene detto direttamente di eseguire i restanti due comandi.


1
Buona risposta, anche se rigorosamente &&non equivale semplicemente a "Attendi che esca il comando precedente" - lo fa uno standard ;. &&attenderà l'uscita del comando precedente e quindi eseguirà il secondo comando solo se il primo comando ha restituito un valore di '0'
qasdfdsaq
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.