Perché drush dice "comando non trovato" quando provo ad eseguire comandi remoti? [chiuso]


13

Quando uso un comando drush per fare qualcosa su una macchina remota, ricevo il seguente messaggio:

bash: drush: comando non trovato

Qual è il problema?


Per come vedo la tua domanda, si tratta ancora di bash, non di Drupal stesso. Né di Drush, davvero, perché se il comando non viene eseguito, non importa se è Drush, Tree, Wget o cosa. E lo scrivo senza vedere alcuna risposta, la mia opinione si basa solo sulla domanda, proprio come hai chiesto.
Mołot,

@ Mołot: una volta che conosci la risposta (e solo allora) potrebbe sembrare di bash, perché ti rendi conto che la fonte del problema è con bash, ma prima di conoscere la risposta, sembra che il messaggio significhi "Bash è dicendo che Drush sta dicendo che il comando non è stato trovato ". Bash sembra inizialmente trasportare solo un messaggio da Drush. Ovviamente non è quello che sta realmente accadendo, ma non lo sai fino a quando non conosci la risposta . La domanda quindi è una domanda che un utente Drupal può avere, riguardo (per quanto ne sa) Drush. La risposta porta Bash in primo piano.
iconoclasta il

Non ho nemmeno visto alcuna risposta quando ho pubblicato il mio commento sopra. È chiaro nella tua domanda che stai chiedendo di non poter trovare il comando bash. Citi la riga di errore in cui Bash segnala che non riesce a trovare Drush. Tu, nessun risponditore. Il mio primo commento è stato in coda di revisione e non vediamo nemmeno le risposte lì. Non vediamo nemmeno se ce ne sono.
Mołot,

Non solo la sintassi dei due punti sembra implicare che Bash stia dicendo che Drush sta dicendo ... , ma per quanto riguarda l'utente, è stato emesso un comando Drush , quindi è più naturale interpretare il comando a cui si fa riferimento come il comando Drush, piuttosto che Drush stesso.
iconoclasta il

1
"Answer" = "soluzione". "Rispondi! =" Rispondi ". Conoscevi la soluzione prima di leggere le risposte. Non sarà vero per tutti. Le domande devono essere classificate in base al contenuto della domanda e non al contenuto della risposta (o" soluzione "se tu preferisco).
iconoclasta il

Risposte:


15

Questo messaggio proviene dalla macchina remota lamentando che non capiva dove trovare l' drusheseguibile, non Drush lamentandosi che non riusciva a trovare il (sotto) comando che potresti provare a dare, anche se la punteggiatura suggerisce quest'ultimo. (Se bash:significa che Bash ti sta trasmettendo un messaggio, allora drush:dovrebbe significare la stessa cosa - se c'è coerenza. Ma in realtà è destinato a significare drush:l'oggetto del messaggio, non la fonte del messaggio che ti passa bash:. essere più chiaro se il secondo :fosse rimosso.)

Drush accede al tuo computer remoto su ssh, ma non è un normale login interattivo, quindi non genera il file .bash_profile. Tuttavia, genera il file .bashrc.

Aggiungi il percorso di trascinamento (escluso drush stesso, includendo solo la directory che contiene drush) alla variabile PATH nel tuo .bashrc remoto e tutto dovrebbe andare bene. Ad esempio, potrebbe apparire così:

PATH=$PATH:/usr/local/zend/bin

8
Anche guardare fuori per la seguente nel tuo ~ / .bashrc: [ -z "$PS1" ] && return. Alcune piattaforme usano questo per salvare se in esecuzione in modalità non interattiva. Ubuntu, ad esempio, lo inserisce nel tuo .bashrc iniziale. Se imposti il ​​PERCORSO, devi assicurarti di impostarlo prima di qualsiasi condizionale come questo che potrebbe forzare un'uscita anticipata.
greg_1_anderson,

3
Grazie per la risposta e il commento. Ho dovuto modificare il percorso .bashrcprima della riga # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esacsu Ubuntu 14.04
Shaun Dychko,
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.