Bagaimana cara menjalankan skrip .sh?

344

Setiap kali saya membuka file .sh, itu membukanya di gedit bukan terminal. Saya tidak dapat menemukan opsi yang mirip dengan Klik KananBuka DenganAplikasi Lain ...Terminal .

Bagaimana cara membuka file ini di terminal?

Alex
sumber
Apakah skrip itu bertujuan untuk mengatur variabel env untuk digunakan lebih lanjut?
Rob
1
Anda seharusnya tidak menggunakan ekstensi pada skrip. Di beberapa titik di masa depan, Anda mungkin menemukan bahwa bahasa yang berbeda lebih cocok untuk melakukan tugas skrip Anda saat ini. Dan kemudian Anda memiliki masalah. Apakah Anda menyimpan nama lama, dengan ekstensi yang sepenuhnya menyesatkan, atau Anda mengganti nama, mungkin harus mengedit banyak tempat di mana skrip Anda digunakan?
geirha
Anda tidak perlu ekstensi file. Sangat menyenangkan untuk memiliki tetapi tidak diperlukan. OS tidak melihat ekstensi file. Itu terlihat pada data
ActionParsnip
5
Meh, jika Anda menulis ulang foo.sh di ruby, Anda selalu dapat menggunakan file .sh untuk meluncurkanruby foo.rb
glenn jackman
Di Dolphin Anda dapat menekan F4 dan konsol terbuka
Motte001

Jawaban:

523

Berikan izin eksekusi ke skrip Anda:

chmod +x /path/to/yourscript.sh

Dan untuk menjalankan skrip Anda:

/path/to/yourscript.sh

Karena .merujuk ke direktori saat ini: jika yourscript.shada di direktori saat ini, Anda dapat menyederhanakan ini menjadi:

./yourscript.sh
karthick87
sumber
13
+1 hanya jawaban untuk menunjukkan penambahan izin eksekusi dengan cara terminal saja.
Hailwood
83
Jika Anda melakukannya bash /path/to/yourscript.shmaka Anda tidak perluchmod +x
Aleksandr Levchuk
4
Sebenarnya, Anda dapat menggunakan . /path/to/yourscript.shjika skrip harus mengatur beberapa variabel lingkungan.
Rob
1
Tidak ada yang menyebutkan tradisional: ./path/to/yourscript.sh(tanpa spasi setelah .)? Saya menemukan bahwa yang paling sederhana dan termudah untuk digunakan ... Tapi bagaimanapun, inilah alternatif saya yang harus melakukan hampir sama seperti ./, meskipun saya tidak melihat mengapa Anda tidak akan menggunakan ./: (FILENAME=~/rem4space.sh;SLL=$(cat $FILENAME|head -1|sed 's:^#!\(.*\):\1:g');[ ! -z $SLL ] && exec $SLL $FILENAME;sh $FILENAME)... sunting FILENAMEsesuai keinginan Anda . Perhatikan juga bahwa shakan digunakan jika tidak ada alternatif.
MiJyn
88

Anda harus menandai skrip shell sebagai executable untuk menjalankannya dari manajer file:

  1. Klik kanan pada .shfile Anda dan pilih Properties :

    masukkan deskripsi gambar di sini

  2. Di tab Izin , centang Izinkan menjalankan file sebagai program :

    masukkan deskripsi gambar di sini

  3. Tutup jendela Properties dan klik dua kali file tersebut. Dialog akan muncul yang memberi Anda opsi untuk menjalankan skrip di terminal:

    masukkan deskripsi gambar di sini

Yesaya
sumber
10
Ini tidak berfungsi di Ubuntu 13.04. Tetap membuka di gedit, tidak pernah meminta saya untuk mengeksekusi. Sunting: Nvm, imjustmatthew menjawab ini.
mpen
Sebelum menggunakan ini, kita perlu membuat izin file untuk dieksekusi menggunakan chmod. chmod + x filename.sh atau chmod 755 filename.sh
Arvind Rawat
Saya tidak punya popup! IDE langsung dibuka, bukan sembulan
Green
Kenapa saya tidak dapat menemukan "run in terminal" di mana pun di antarmuka saya? (Ubuntu 18.04)
Daniel Möller
1
@ DanielMöller, ini jawaban untuk pertanyaan Anda. askubuntu.com/questions/38661/how-do-i-run-sh-files/…
Akhilesh Dhar Dubey
33

Buka terminal dan navigasikan ke folder tempat .shfile itu berada. Kemudian ketik:

sh <name of file>.sh
italianfoot
sumber
cara terbaik untuk membuka aplikasi apa pun. Arahkan ke direktori .sh lalu buka di command prompt. penggunaan sh <nama file seperti yang ditunjukkan di atas> .sh jika memerlukan izin, gunakan chmod + x /path/to/yourscript.sh atau klik kanan dan ubah izin untuk semua
Durgesh Kumar
24

Prasyarat

Sebelum Anda dapat menjalankan file .sh, Anda harus membuatnya dapat dieksekusi:

  1. Klik kanan pada file tersebut
  2. Pilih Properties
  3. Pilih Izin
  4. Pilih Izinkan mengeksekusi file sebagai program

Peringatan

Pastikan Anda memercayai sumber dari mana Anda mendapatkan file itu. Bisa jadi virus .

Cara yang sangat sederhana

  1. Klik dua kali pada file tersebut
  2. Klik jalankan di terminal

Ini bermasalah. Terminal akan segera ditutup dan Anda tidak akan dapat melihat hasilnya.

Cara sederhana

  1. Buka Aplikasi -> Aksesori -> Terminal
  2. Seret dan letakkan file .sh ke terminal dan tekan Enter

Cara profesional melakukannya

  1. Buka Aplikasi -> Aksesori -> Terminal
  2. Temukan di mana file .sh

    • Gunakan perintah lsdancd
    • lsakan mencantumkan file dan folder di folder saat ini . Cobalah: ketik "ls" dan tekan Enter.
    • Setelah Anda melihat folder yang ingin Anda masuki, jalankan cd, diikuti oleh spasi, diikuti oleh nama folder
    • Jika Anda saat ke folder yang Anda tidak ingin, berjalan cd ..pergi satu tingkat ke atas
  3. Jalankan file .sh

    • Setelah Anda dapat melihat misalnya script1.shdengan lsmenjalankan ini:

      ./script.sh

Mengapa melakukannya dengan cara yang rumit?

Terminal memiliki seperangkat alat yang kaya yang dapat diakses dengan mengetikkan perintah. Profesional menemukan file .sh dengan mengetik lsdan cd. Setelah Anda berada di folder saat ini yang benar, Anda dapat menjalankan skrip seperti ini:

./script1.sh

atau Anda dapat menjalankan dan mengarahkan output ke file:

./script1.sh > out.txt

atau Anda dapat memfilter output untuk kata kunci (mis. "apel") lalu diarahkan ke file:

./script1.sh | grep apples > ./only-apples

Ada ribuan hal yang dapat Anda lakukan untuk file itu hanya dengan mengetikkan beberapa perintah.

Yang lain, Anda dapat mengunduh file dari Internet dengan satu perintah sederhana:

wget www.google.com/images/logos/ps_logo2.png

Dan kemudian buka file seperti ini:

shotwell ps_logo2.png
Aleksandr Levchuk
sumber
6
Saya tidak yakin bahwa cara profesional melakukannya adalah benar, ini lebih merupakan kasus dari cara sederhana yang canggih (untuk kontrol output) cara
Hailwood
Senang mengetahui bahwa saya melakukannya dengan cara yang profesional lakukan pada percobaan pertama saya. Saya pikir itu adalah cara pengguna dasar.
NelsonGon
19

Pada Ubuntu 13,04 file yang dapat dieksekusi yang dibuka di Nautilus sekarang dibuka di gedit secara default alih-alih mendorong pengguna untuk mengeksekusinya. Untuk mengaktifkan perilaku klasik, Anda perlu menyesuaikan preferensi:

Nautilus → menu Edit → Preferensi → tab Perilaku → Klik tombol radio di dekat Tanya setiap kali.

tidak adil
sumber
Orang yang mengajukan pertanyaan berbicara tentang Ubuntu 10.10
edwin
1
Terima kasih!!! Saya tidak tahu mengapa mereka mengubah ini, tidak tahu cara menjalankan apa pun.
mpen
1
Ini adalah jawaban yang tepat untuk ubuntus terbaru.
gaRex
Bagaimana Anda bisa sampai ke Nautilus di 15.10?
Yaakov Ainspan
Pada Ubuntu 18.04, Anda dapat mengakses preferensi dengan membuka direktori dan kemudian mengklik "File -> Preferences" di bar bagian atas.
tparker
7

Pergi ke direktori tempat .shfile tersebut digunakan cd. Dalam contoh ini saya telah menyimpan shfile saya sebagai~/Desktop/shell_practice/test.sh

pertama lakukan pwduntuk mencari tahu di mana Anda berada, dan jika itu kembali /home/username(di mana usernamenama pengguna Anda yang sebenarnya), Anda dapat menjalankan

cd Desktop/shell/practice

Jika Anda tampaknya berada di tempat lain, Anda dapat menggunakan jalur absolut

cd ~/Desktop/shell/practice

atau

cd $HOME/Desktop/shell/practice

atau bahkan

cd /home/$USER/Desktop/shell/practice

ini semua cara menggambarkan tempat yang sama. Setelah Anda berhasil menuju lokasi skrip Anda, ketikkan

ls

Jika Anda dapat melihat shfile di output, Anda dapat menggunakannya chmoduntuk membuatnya dapat dieksekusi. Dalam kasus saya, ingat, nama file-nya test.sh, jadi saya akan lari

chmod u+x test.sh

Sekarang kita berada di direktori yang sama dengan skrip, kita harus menentukan ke shell bahwa kita ingin mengeksekusi file dengan memberikan lokasinya ./(direktori saat ini diikuti oleh pemisah jalur, untuk membedakannya dari nama file). Untuk menjalankan file saya, saya akan mengetik:

./test.sh

Jika skrip Anda telah ditulis dengan benar, skrip akan berjalan tanpa kesalahan ...

Inilah contoh langsung: Ini adalah contoh langsung

Pengusir setan
sumber
Ini berhasil bagi saya untuk menginstal Netbeans di ubuntu
RuD3B0y
1
Wb, @ RuD3B0y, saya mencoba untuk menjaga jawaban terbaik untuk noobs, tidak ada konten teknologi tinggi, jika Anda memiliki beberapa pengeditan Anda dipersilakan.
TheExorcist
4

2 langkah utama.

  1. di terminal, gunakan gedit untuk menulis dan menyimpan skrip dengan ekstensi ".sh" ke desktop. (tetapi editor teks apa pun dapat digunakan)

  2. buka Nautilus dan klik kanan file script.sh.

    • di bawah properti, centang kotak "izinkan file pelaksana .."

    • di menu Nautilus, klik file, lalu preferensi, lalu perilaku

    • periksa "jalankan file teks yang dapat dieksekusi ketika dibuka".

Sekarang, ketika Anda mengklik dua kali file pada desktop, itu harus dijalankan. tidak perlu .atau./

rampok
sumber
3
  1. Klik kanan .shfile dan buat itu dapat dieksekusi.

  2. Buka terminal ( Ctrl+ Alt+ T).

  3. Seret .shfile ke jendela terminal dan tonton dengan kagum.

1p_bunny
sumber
1
Selamat Datang di Tanya Ubuntu! Saya sarankan untuk mengedit jawaban ini untuk memperluasnya dengan perincian spesifik tentang bagaimana melakukan langkah pertama. (Lihat juga Bagaimana cara saya menulis jawaban yang baik? Untuk saran umum tentang jenis jawaban apa yang dianggap paling berharga di AskUbuntu.)
David Foerster
3

Ada beberapa cara untuk melakukan ini.

Pilihan 1

  1. Di terminal, akses direktori yang menggunakan file Bash cd(ubah direktori).

    Ex. cd Downloads

  2. Lari bash <filename>.sh

    Ini juga berfungsi dengan file .run. Ada contoh penggunaan ini di halaman web ini saat memperbarui Rhythmbox.

pilihan 2

  1. Di terminal, navigasikan ke direktori tempat file bash berada.

  2. Lari chmod +x <filename>.sh

  3. Di Nautilus, buka file.

Kenny Stier
sumber
3

Untuk Ubuntu 18.04 , Ada sedikit modifikasi, karena Anda tidak mendapatkan dialog sembulan.

Jadi yang perlu Anda lakukan adalah:

Klik kanan pada File, Pilih Preferensi> Pilih Tab Perilaku> Tandai opsi 'Tanya apa yang harus dilakukan' di bawah File teks yang dapat dieksekusi.

Sekarang, Ketika Anda mengklik dua kali pada file .sh apa pun, Anda akan mendapatkan popup, di sana Anda dapat memilih opsi "jalankan di terminal" untuk menjalankan file .sh Anda.

masukkan deskripsi gambar di sini

Akhilesh Dhar Dubey
sumber
2

Di Ubuntu 16.04 ini cara membukanya di Terminal:

Pergi ke File Manager > Edit > Preferences > Behavioruntuk Executable Text Filesdan pilih Ask each time.

Masalahnya adalah bahwa secara default diatur ke View Executable Files when they are opened.

Leniel Maccaferri
sumber
1

Jika Anda menempatkan skrip shell atau executable lain yang Anda buat di / usr / local / bin, skrip tersebut akan ditemukan dan dieksekusi tanpa harus memberikan path folder di baris perintah atau menambahkan ./ ke nama. Misalnya saya membuat skrip bash 3 baris sederhana berikut untuk menampilkan disk UUID:

#!/bin/bash
echo "* UUIDs must match in /etc/fstab and /boot/grub/menu.lst"
sudo blkid

Saya memanggil file uuid dan meletakkannya di / usr / local / bin. Yang perlu saya masukkan pada baris perintah adalah:

uuid
frago
sumber
0

Yah, saya juga menghadapi masalah yang sama. Saya ingin mengeksekusi file .sh dan dibuka dengan Gedit pada CentOS 7. Jadi inilah yang saya lakukan:

  1. Saya menavigasi ke jalur .shfile yang ingin saya jalankan.
  2. Saya membuka terminal.
  3. Dan saya cukup menarik dan menjatuhkan jendela terminal dan secara otomatis mengambil file itu bersama dengan path sebagai input.
  4. Tekan Enter dan Anda siap berangkat!
Jen Bates
sumber
0

Masalah yang saya temukan pada beberapa distribusi adalah mereka menyembunyikan opsi preferensi di Nautilus, tetapi untuk memperbaikinya di Ubuntu dan distribusi lainnya menggunakan Gnome3 adalah sama (secara harfiah hanya melakukan versi Fedora ini dan memposting perbaikan yang sebenarnya untuk mengingatkan saya bagaimana di masa depan).

  1. Pasang dconf-editor

    sudo apt-get install dconf-editor
  2. Jalankan dconf-editormenggunakan akun pengguna yang Anda inginkan ini, yaitu BUKAN root

    dconf-editor
  3. Arahkan ke skema berikut:

    org.gnome.nautilus.preferences

  4. Ubah opsi default menjadi tidak terbuka secara default:

    Temukan executable-text-activationklik kata displaydan ubah keask

yang akan memberi Anda opsi untuk mengedit, melihat, atau menjalankan file yang akan datang

Snider
sumber
0

Saya seorang noob di Linux dan saya punya masalah yang sama. Jika semuanya gagal:

  1. Terminal terbuka
  2. Buka folder yang berisi file .sh
  3. Seret dan jatuhkan file ke jendela terminal
  4. Jalur file muncul di terminal. Tekan Enter.
  5. Voila, file .sh Anda dijalankan.
Linux_noob
sumber
-2

Anda juga dapat menggunakan .trik, dengan saran jawaban lain.

Sebagai contoh:

chmod +x filename.sh, dengan asumsi Anda sudah pergi ke path ke file kemudian jalankan file dengan salah satu dari perintah ini:

sh filename.sh

./filename.sh

. filename.sh
Menunggu
sumber
2
peringatan : Ketiga perintah ini tidak setara. Jika shebang mereferensikan biner yang berbeda (seperti Stack), maka perintah ketiga akan mencoba mengurai argumen dengan Bash, yang akan gagal.
Jezen Thomas