Mengapa drush mengatakan “command not found” ketika saya mencoba menjalankan perintah remote? [Tutup]

13

Ketika saya menggunakan perintah drush untuk melakukan sesuatu pada mesin jarak jauh, saya mendapatkan pesan berikut:

bash: drush: perintah tidak ditemukan

Apa masalahnya?

iconoclast
sumber
Cara saya melihat pertanyaan Anda, masih tentang bash, bukan Drupal sendiri. Juga tentang drush, sungguh, karena jika perintah tidak dieksekusi, tidak masalah apakah drush, tree, wget atau apa. Dan saya menulisnya tanpa melihat jawaban, pendapat saya hanya didasarkan pada pertanyaan, seperti yang Anda tanyakan.
Mołot
@ Mołot: Setelah Anda tahu jawabannya (dan hanya kemudian) itu mungkin tentang bash, karena Anda menyadari bahwa sumber masalahnya adalah dengan bash, tetapi sebelum Anda tahu jawabannya, sepertinya pesan itu berarti "Bash adalah mengatakan bahwa Drush mengatakan bahwa perintah tidak ditemukan ". Bash muncul awalnya hanya akan membawa pesan dari Drush. Tentu saja bukan itu yang sebenarnya terjadi, tetapi Anda tidak tahu itu sampai Anda tahu jawabannya . Karena itu pertanyaannya adalah pertanyaan yang mungkin dimiliki pengguna Drupal, tentang (sejauh yang mereka tahu) Drush. The jawaban membawa Bash ke permukaan.
iconoclast
Saya bahkan belum melihat ada jawaban ketika saya memposting komentar saya di atas. Jelas dalam pertanyaan Anda bahwa Anda bertanya tentang bash yang tidak dapat menemukan perintah. Anda mengutip garis kesalahan di mana bash melaporkan bahwa itu tidak dapat menemukan drush. Anda, bukan penjawab apa pun. Komentar pertama saya adalah dalam antrian ulasan dan kami bahkan tidak melihat jawaban di sana. Kami bahkan tidak melihat apakah ada.
Mołot
Sintaks dari titik dua tidak hanya menyiratkan Bash mengatakan bahwa Drush mengatakan ... , tetapi sejauh menyangkut pengguna, perintah Drush dikeluarkan, jadi itu paling alami untuk menafsirkan perintah yang disebut sebagai perintah Drush, daripada Drush sendiri.
iconoclast
1
"Jawab" = "solusi". "Jawab! =" Balas ". Anda tahu solusinya sebelum Anda membaca balasan apa pun. Itu tidak akan berlaku untuk semua orang. Pertanyaan harus dikategorikan berdasarkan isi pertanyaan, bukan konten jawaban (atau" solusi "jika Anda prefer).
iconoclast

Jawaban:

15

Pesan ini dari mesin jarak jauh mengeluh bahwa ia tidak mengerti di mana menemukan drushexecutable, bukan Drush mengeluh bahwa ia tidak dapat menemukan (sub) perintah yang Anda coba berikan, meskipun tanda baca menyarankan yang terakhir. (Jika bash:Bash berarti menyampaikan pesan kepada Anda, maka drush:harus berarti hal yang sama - jika ada konsistensi. Tapi sebenarnya maksudnya drush:adalah subjek pesan, bukan sumber pesan yang dikirimkan bash:kepada Anda. Itu akan lebih jelas jika yang kedua :dihapus.)

Drush log ke mesin jarak jauh Anda melalui ssh, tapi itu bukan login interaktif normal, jadi tidak sumber .bash_profile. Namun demikian, sumber file .bashrc.

Tambahkan jalur drush (tidak termasuk drush itu sendiri, hanya termasuk direktori yang mengandung drush) ke variabel PATH di .bashrc jarak jauh Anda dan semuanya harus baik-baik saja. Misalnya, yang mungkin terlihat seperti ini:

PATH=$PATH:/usr/local/zend/bin
iconoclast
sumber
8
Juga melihat keluar untuk berikut di ~ / .bashrc: [ -z "$PS1" ] && return. Beberapa platform menggunakan ini untuk menyelamatkan jika berjalan dalam mode non-interaktif. Ubuntu, misalnya, meletakkan ini di .bashrc awal Anda. Jika Anda mengatur PATH Anda, Anda perlu memastikan bahwa Anda mengaturnya sebelum kondisi seperti ini yang mungkin memaksa keluar lebih awal.
greg_1_anderson
3
Terima kasih atas jawaban dan komentarnya. Saya harus mengedit path .bashrcsebelum baris # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esacdi Ubuntu 14.04
Shaun Dychko