Pertanyaan Cara membuat file (misalnya skrip .sh) yang dapat dieksekusi, sehingga dapat dijalankan dari terminal


Saya memiliki file script.sh dan jenis file ini adalah file shellscript. Saya ingin menjadikan file ini sebagai file aplikasi / x-executable. Bagaimana saya bisa membuatnya?


182
2017-12-16 12:27


asal


berhubungan dengan Bagaimana cara menjalankan file .sh di Terminal? - TuKsn
Kemungkinan duplikat dari Bagaimana cara menjalankan file .sh? - karel
Ini bukan duplikat, karena saya telah meminta secara khusus tentang membuat aplikasi / x-executable. Pertanyaan lain hanya meminta membuka file sh di terminal. - Ziyaddin Sadigov


Jawaban:


Anda bisa membuatnya dengan melakukan seperti itu

chmod +x filename.sh

sehingga akan dijalankan saat Anda memanggilnya

./filename.sh

dan Anda dapat mengakses skrip itu sebagai aplikasi juga.

buka terminal Anda dan ketik seperti di bawah ini dari direktori home Anda.

gedit .bashrc

kemudian di file yang dibuka, ketik ini di baris terakhir.

alias <Name_with which you wanna call it >='./filename.sh'

Simpan dan tutup .

Kemudian ketik ini di terminal Anda source ~/.bashrc untuk menerapkan perubahan yang Anda buat. lalu cukup ketik nama yang Anda berikan di sana setelah alias untuk mengakses skrip Anda.

pastikan bahwa Anda telah ditempatkan di direktori home.

lain

alias <Name_with which you wanna call it >='./<path to your script >.sh'

Semoga itu membantu.


244
2017-12-16 12:33



Apakah Anda tahu bagaimana menggunakan perintah sudo setelah memasukkan perintah sebagai: "alias command1 = '/home/user_name/dir/script.sh'. Di tambang, ia bekerja tanpa sudo, tetapi tidak dengan itu. - Aditya
Anda harus me-restart bash setelah mengedit .bashrc run: exec bash untuk me-restart bash. - Sampath Perera
Mengapa file yang dapat dieksekusi menjadi ./filename.sh dan bukan hanya filename.sh? - user1993
@ user1993 ya, saya juga mencari cara untuk membuatnya bisa dieksekusi hanya dengan filename dan tidak ./filename - MycrofD
@ user1993 Secara umum, menggunakan ./filename.sh menentukan file di direktori saat ini dan menggunakan filename.sh menentukan file di direktori saat ini atau direktori PATH. Penggunaan pertama menghilangkan ketidakpastian apa pun ke file mana yang diakses. Dalam hal ini, Anda mencoba menjalankan skrip dengan bash atau penerjemah lain (berdasarkan asumsi #!/bin/bash sebagai baris pertama dalam skrip Anda) hanya dengan memasukkan nama file. Penggunaan ini membutuhkan direktori yang ditentukan. Atau, Anda dapat mencoba bash filename.sh yang tampaknya berfungsi dengan direktori yang tidak ditentukan. - a505999


Ada dua cara membuat file dapat dieksekusi:

Metode GUI:

Pergi ke tab izin, lalu centang kotak `Jalankan: [] Izinkan file eksekusi sebagai program.

enter image description here

Metode Terminal / Perintah:

Anda dapat menggunakan:

cd /to/my/required/directory

Lalu lari

chmod +x filename.extension

Atau jalankan saja:

chmod +x /path/to/your/filename.extension

chmod juga memiliki beberapa opsi lanjutan:

Ruang-ruang tersebut menunjukkan bahwa ia terpecah: - rwx --- ---

Set pertama dari --- adalah Pengguna. Yang kedua adalah Group dan yang terakhir adalah Other (orang lain)

r berarti Read, w untuk Write dan x untuk eXecute.

Jadi untuk memungkinkan semua orang membacanya, tetapi hanya Grup yang dijalankan dan Pengguna untuk membaca dan menulisnya (tetapi untuk beberapa alasan tidak mengeksekusi) adalah:

-rw- rx- r-- Tapi ini akan ditambahkan ke perintah sebagai:

chmod +rw-rx-r-- /path/to/file.extension

chmod juga bisa melakukan ini dalam jumlah. Ini didasarkan pada biner (saya pikir, karena 1,2 dan 4)

Jadi ada angka-angka ini:

Jalankan oleh pengguna 100. Execute oleh grup adalah 010. Jalankan oleh lainnya adalah 001

Tulis oleh pengguna 200. Tulis berdasarkan grup adalah 020. Tulis oleh yang lainnya 002.

Dibaca oleh pengguna 400. Baca berdasarkan grup 040. Baca dengan yang lain adalah 004.

Kemudian Anda menambahkan ini bersama-sama untuk mendapatkan kombinasi yang diinginkan.

Jadi untuk memungkinkan semua orang membacanya, tetapi hanya Grup untuk mengeksekusi dan Pengguna untuk menulisnya (tetapi untuk beberapa alasan tidak mengeksekusi) adalah:

400 + 040 + 004 dan 010 dan 200

Itu menambahkan hingga 600 + 050 + 004 = 654.

Anda kemudian dapat menjalankan perintah.

chmod +654 /path/to/file.extension untuk mengaturnya.

Dan untuk mengatur semua izin yang dapat Anda ketik:

chmod +rwxrwxrwx /path/to/file.extension

Atau (ini sedikit lebih mudah untuk ditulis, tetapi lebih sulit untuk mengingatnya):

chmod +777 /path/to/file.extension

Akhirnya, Anda bisa melakukan:

chmod -777 /path/to/file.extension

Untuk mengambil semua izin dari semua orang.

Dan:

chmod +300 /path/to/file.extension

Untuk menambahkan baca dan tulis untuk pengguna, tanpa memengaruhi izin lainnya (mis. Jalankan izin).

Situs ini memiliki kotak centang kotak kecil yang sangat berguna, di mana Anda dapat mencentang opsi yang Anda inginkan dan memberi Anda perintah:

enter image description here

Namun, tidak semua kombinasi yang mungkin masuk akal untuk digunakan; yang utama yang digunakan adalah sebagai berikut:

755 - Owner memiliki semua, dan Group dan Other dapat membaca dan mengeksekusi

700 - Owner punya semuanya

644 - Owner dapat membaca dan menulis, dan Group dan Otherdapat membaca

600 - Owner dapat membaca dan menulis

Dan, jika Anda menggunakan grup pengguna non-sepele:

775 - Owner dapat membaca dan menulis, dan Group dan Otherdapat membaca

770 - Owner dan Group punya semuanya, dan Other dapat membaca dan mengeksekusi

750 - Owner memiliki semua, dan Group dapat membaca dan mengeksekusi

664 - Owner dan Group dapat membaca dan menulis, dan Other hanya bisa membaca

660 - Owner dan Group dapat membaca dan menulis

640 - Owner dapat membaca dan menulis, dan Groupdapat membaca

777 dan 666 jarang digunakan, kecuali di / tmp.

Terima kasih Ilmari Karonen untuk menunjukkan yang umum digunakan!


31
2018-06-18 12:22



Bukankah itu didasarkan pada oktal (8-base) daripada biner (berbasis 2)? Dalam biner Anda hanya dapat memiliki 0 dan 1, sedangkan dalam oktal Anda dapat memiliki 0, 1, ... 6, 7 - Justinas
@Justinas binary dalam 7 = 4 + 2 + 1 - 111 mewakili Baca dan Tulis dan Jalankan. - Tim


Menjalankan:

chmod +x /path/to/file.sh

Untuk membuatnya tidak dapat dieksekusi, jalankan:

chmod -x /path/to/file.sh

Misalnya saya buat .sh mengajukan:

vi tester12.sh

Setelah saya menulis beberapa kode pada editor vi, saya akan keluar dari vi editor:

:wq!
chmod +x tester12.sh
./tester12.sh

7
2018-06-18 12:39