Dlaczego drush mówi „polecenie nie znaleziono”, gdy próbuję wykonać polecenia zdalne? [Zamknięte]

13

Kiedy używam polecenia drush do zrobienia czegoś na zdalnym komputerze, pojawia się następujący komunikat:

bash: drush: nie znaleziono polecenia

Jaki jest problem?

ikonoklasta
źródło
Widzę twoje pytanie, wciąż dotyczy bashu, a nie samego Drupala. Ani o drushu, naprawdę, ponieważ jeśli polecenie nie zostanie wykonane, nie ma znaczenia, czy to drush, drzewo, wget czy co. I piszę to, nie widząc żadnych odpowiedzi, moja opinia opiera się tylko na pytaniu, tak jak zadałeś.
Mołot
@ Mołot: Gdy znasz odpowiedź (i tylko wtedy), może wydawać się, że chodzi o bash, ponieważ zdajesz sobie sprawę, że źródłem problemu jest bash, ale zanim poznasz odpowiedź, wygląda na to, że komunikat oznacza „bash jest mówiąc, że Drush mówi, że polecenia nie znaleziono ". Wydaje się, że Bash początkowo niesie jedynie wiadomość od Drusha. Oczywiście tak się nie dzieje, ale nie wiesz o tym, dopóki nie poznasz odpowiedzi . Pytanie jest zatem pytanie, które użytkownik może mieć Drupal, o (o ile wiem) Drush. Odpowiedź przynosi Bash na czele.
iconoclast
Nawet nie widziałem żadnej odpowiedzi, kiedy zamieściłem mój komentarz powyżej. W twoim pytaniu jest jasne, że pytasz, czy bash nie może znaleźć polecenia. Cytujesz wiersz błędu, w którym bash informuje, że nie może znaleźć drusha. Ty, nie żaden odpowiadający. Mój pierwszy komentarz był w kolejce do przeglądu i nawet tam nie widzimy odpowiedzi. Nie wiemy nawet, czy są jakieś.
Mołot
Składnia dwukropków nie tylko sugeruje , że Bash mówi, że Drush mówi ... , ale jeśli chodzi o użytkownika, wydano polecenie Drush , więc najbardziej naturalne jest interpretowanie polecenia, które jest nazywane polecenie Drush, a nie sam Drush.
iconoclast,
1
„Odpowiedź” = „rozwiązanie”. „Odpowiedź! =„ Odpowiedź ”. Znałeś rozwiązanie przed przeczytaniem jakichkolwiek odpowiedzi. Nie będzie to prawdą dla wszystkich. Pytania muszą być podzielone na kategorie według treści pytania, a nie treści odpowiedzi (lub„ rozwiązania ”, jeśli wolą)
iconoclast

Odpowiedzi:

15

Ta wiadomość pochodzi od zdalnego komputera, który narzeka, że ​​nie zrozumiał, gdzie znaleźć drushplik wykonywalny, a nie Drush, który nie może znaleźć polecenia (pod), które możesz mu nadać, nawet jeśli interpunkcja sugeruje to drugie. (Jeśli bash:oznacza to, że Bash przekazuje ci wiadomość, to drush:powinno to znaczyć to samo - jeśli istnieje jakakolwiek spójność. Ale tak naprawdę ma to oznaczać, że drush:jest to temat wiadomości, a nie źródło wiadomości, która bash:do ciebie trafiła. bądź jaśniejszy, jeśli drugi: został usunięty).

Drush loguje się do twojego zdalnego komputera przez ssh, ale nie jest to normalne logowanie interaktywne, więc nie pobiera pliku .bash_profile. Jednak źródłowy plik .bashrc.

Dodaj ścieżkę drush (nie włączając samego drusha, tylko katalog zawierający drush) do zmiennej PATH w twoim zdalnym .bashrc i wszystko powinno być dobrze. Na przykład może to wyglądać tak:

PATH=$PATH:/usr/local/zend/bin
ikonoklasta
źródło
8
Również zwrócić uwagę na następujące w pliku ~ / .bashrc: [ -z "$PS1" ] && return. Niektóre platformy używają tego do ratowania, jeśli działają w trybie nieinteraktywnym. Na przykład Ubuntu umieszcza to w początkowym pliku .bashrc. Jeśli ustawisz ŚCIEŻKĘ, musisz upewnić się, że ustawiłeś ją przed jakimikolwiek warunkami, takimi jak ten, który może wymusić wcześniejsze wyjście.
greg_1_anderson
3
Dzięki za odpowiedź i komentarz. Musiałem edytować ścieżkę .bashrcprzed linią # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esacUbuntu 14.04
Shaun Dychko