Saya menggunakan kali linux 64 bit.
Saya telah membuat skrip python yang membutuhkan 2 argumen untuk memulai. Saya tidak ingin mengetik setiap kali jalur yang sama persis atau mencari dalam sejarah perintah yang saya gunakan di terminal. Jadi saya memutuskan untuk membuat skrip sederhana yang memanggil skrip python dengan argumennya.
#! /bin bash
python CreateDB.py ./WtfPath ./NoWtfPath/NewSystem/
Ini adalah perintah yang sama persis yang akan saya gunakan di terminal. Namun, saya mendapatkan pesan kesalahan saat mencoba menjalankan file skrip.
bash: ./wtf.sh: /bin: bad interpreter: Permission denied
wtf.sh memiliki hak yang dapat dieksekusi.
Apa yang salah?
#!/bin/sh
(alih-alih#!/bin/bash
) kecuali Anda tahu bahwa Anda menggunakanbash
fitur.sh
ketika saya tahu saya tidak menggunakan fitur bash).which bash
sangat membantu. Itu kembali/bin/bash
. Di bagian atas skrip Bash saya, saya menambahkan#!/bin/bash
. Lalu ketika saya ingin menjalankan skrip Bash, saya masukbash foo.sh
. Begituwhich sh
juga digunakan dengan cara yang sama.sh foo.sh
/bin/sh
adalah sesuatu selain Bash dan ada Bashisme yang tidak diketahui dalam skrip). Lihat disini.Perlu dicatat bahwa jika mountpoint di mana skrip Anda berada memiliki atribut 'noexec', maka Anda dapat mengubah semua yang Anda inginkan dan itu masih tidak akan berhasil, tetapi memanggil penerjemah dengan skrip sebagai argumen akan (selama yang pada gilirannya tidak mencoba menjalankan skrip lain di mount noexec).
sumber