"Command not found" saat menjalankan skrip shell. Apa yang saya hancurkan?

8

Saya menggunakan OSX Snow Leopard.

Inilah isi lengkap dari grr.sh:

#!/bin/sh

echo wow

Ketika saya mencoba menjalankannya dari terminal:

$ grr.sh
-bash: grr.sh: command not found
$ /bin/sh grr.sh
wow
$ sh grr.sh
wow
$ bash grr.sh
wow

Baik. Cukup adil. Saya akan memberikan izin yang dapat dieksekusi, lalu coba lagi:

$ chmod +x grr.sh
$ grr.sh
-bash: grr.sh: command not found
$ chmod 755 grr.sh
$ grr.sh
-bash: grr.sh: command not found

Hmmm. Mungkin itu akan berhasil jika saya menggunakan bash secara eksplisit? Saya akan mengubah konten file menjadi:

#!/bin/bash

echo wow

Dan saya mendapatkan hasil yang sama persis. Apa yang bisa saya rusak ?!

Satu hal terakhir! Jika Anda penasaran ...

$ which sh
/bin/sh
Koboi Penutupan
sumber

Jawaban:

19

Sama sekali tidak ada. Hanya executable di salah satu direktori yang $PATHdapat dijalankan secara langsung, dan .(biasanya) tidak pernah aktif $PATH. Tentukan path ke executable, yaitu ./grr.sh.

Ignacio Vazquez-Abrams
sumber
3
+1. Sebagai catatan, direktori saat ini ada di jalur pada sistem Windows secara default, dan prioritas tertinggi. Perbedaan penting ini mungkin merupakan sumber kebingungan si penanya.
afrazier
Anda pertama kali 9 detik! Terima kasih!
Penutupan Cowboy
Anda menyimpan macbook saya
vietnguyen09
7

Apakah lokasi grr.sh dalam $PATHvariabel? Jika tidak, Anda harus memasukkan:

./grr.sh

jika Anda berada di folder yang sama dengan grr.sh. Jika tidak, maka berikan path lengkap untuk itu.

Cam Jackson
sumber
6

izin untuk file salah. Coba perintah berikut:

  $ chmod 777 file.sh
  $ ./file.sh
hopper
sumber
0

Ya, dan apa artinya ./grr.sh, adalah bahwa dalam direktori ini, jalankan perintah grr.sh. Tunggal . berarti di direktori kerja. Jika tidak, shell Anda menganggap Anda mencoba menjalankan perintah di $ PATH Anda.

Nathan
sumber