Jika Anda sudah berada di /path/to direktori, misalnya dengan cd /path/toperintah, Anda dapat masuk ./scriptuntuk menjalankan skrip Anda. Jangan lupa, dalam hal ini './' sebelum 'skrip'
FrViPofm
120
Cara lain untuk mengeksekusinya (kali ini tanpa mengatur izin eksekusi):
Ini hanya akan berfungsi jika skrip memiliki set bit eksekusi. Itu mungkin perlu ditangani.
Bryan Oakley
./scriptname.shbekerja untuk saya tetapi scriptname.shmemberi scriptname.sh: command not found. -rwxr-xr-xadalah izinnya.
Spikatrix
1
Nasihat ke cdmana saja sama sekali melakukan kesalahpahaman pemula umum lainnya. Kecuali skrip secara internal memiliki ketergantungan yang memerlukannya untuk dijalankan di direktori tertentu (seperti, perlu membaca file data yang skripnya tidak memberikan opsi untuk ditunjukkan) Anda tidak perlu ke cdmana pun untuk menjalankannya, dan sangat sering tidak mau.
Suara negatif: Itu salah jika itu benar skrip Bash.
tripleee
1
Suara positif: Ini baik-baik saja di Mac OS X jika skrip bash Anda ada di direktori yang sama
Karl Taylor
30
@kot "Kebetulan bekerja untuk saya" sangat jauh dari "ini adalah jawaban yang benar". Ini dapat berfungsi jika shmerupakan symlink ke bash, atau jika skrip tidak menggunakan konstruksi khusus Bash. Dalam kasus sebelumnya, menggunakan bashalih-alih shmerupakan satu-satunya solusi portabel yang benar; dalam kasus terakhir, ini bukan jawaban yang benar untuk pertanyaan khusus ini, karena OP menanyakan saran untuk skrip Bash secara khusus. Mengabaikan jawaban yang salah adalah tidak bertanggung jawab; pengguna yang gagal memahami perbedaannya sering kali memposting di sini, dan perlu diperlihatkan mengapa jawaban "berhasil untuk saya" ini tidak berhasil untuk mereka.
@ kot Saya ulangi: Ada situasi di mana ini berfungsi (seperti yang Anda ketahui) tetapi ini bukan jawaban yang benar dalam kasus umum untuk pertanyaan di judul. Setidaknya, jawaban ini harus menjelaskan kondisi di mana ia bekerja; tetapi saran saya adalah menghapus jawaban ini.
tripleee
14
Pertama Anda harus membuatnya executable menggunakan: chmod +x name_of_your_file_script.
Setelah Anda membuatnya dapat dieksekusi, Anda dapat menjalankannya menggunakan ./same_name_of_your_file_script
Tidak perlu cdkemana - mana; Anda dapat menentukan nama jalur kompleks yang sewenang-wenang sebagai argumen untuk bash; memang, program apa pun yang menggunakan argumen nama file bekerja dengan cara ini (atau yang mengerikan, rusak total).
tripleee
10
Ini adalah utas lama, tetapi saya kebetulan menemukannya dan saya terkejut belum ada yang memberikan jawaban lengkap. Jadi begini ...
Tutorial Menjalankan Script Baris Perintah!
T: Bagaimana saya menjalankan ini di Terminal?
Kebingungan dan Konflik:
Anda tidak memerlukan 'ekstensi' (seperti .sh atau .py atau apa pun), tetapi itu membantu untuk melacak berbagai hal. Tidak akan sakit. Namun, jika nama skrip berisi ekstensi, Anda harus menggunakannya.
Anda tidak perlu berada di direktori tertentu dengan alasan apapun.
Anda tidak perlu mengetikkan nama program yang menjalankan file tersebut (BASH atau Python atau apapun) kecuali Anda mau. Tidak akan sakit.
Anda tidak perlu sudomelakukan semua ini. Perintah ini disediakan untuk menjalankan perintah sebagai pengguna lain atau pengguna 'root' (administrator). Posting yang bagus di sini .
(Seseorang yang baru belajar bagaimana mengeksekusi skrip tidak boleh menggunakan perintah ini kecuali ada kebutuhan nyata, seperti menginstal program baru. Tempat yang baik untuk meletakkan skrip Anda ada di folder ~ / bin Anda. Anda bisa sampai di sana dengan mengetik cd ~/binatau cd $HOME/bindari prompt terminal. Anda akan memiliki izin penuh di folder itu.)
Untuk "menjalankan skrip ini" dari terminal pada sistem tipe Unix / Linux, Anda harus melakukan tiga hal:
Beri tahu sistem lokasi skrip. (Pilih salah satu)
Ketik jalur lengkap dengan nama skrip (misalnya /path/to/script.sh). Anda dapat memverifikasi jalur lengkap dengan mengetik pwdatau echo $PWDdi terminal.
Jalankan dari direktori yang sama dan gunakan ./untuk jalur (mis ./script.sh.). Mudah.
Letakkan script di direktori yang ada di sistem PATHdan ketikkan saja namanya (mis script.sh.). Anda dapat memverifikasi sistem PATHdengan mengetik echo $PATHatau echo -e ${PATH//:/\\n}jika Anda ingin daftar yang lebih rapi.
Beri tahu sistem bahwa skrip memiliki izin untuk dijalankan. (Pilih salah satu)
Setel "bit eksekusi" dengan mengetik chmod +x /path/to/script.shdi terminal.
Anda juga dapat menggunakan chmod 755 /path/to/script.shjika Anda lebih suka angka. Ada diskusi hebat dengan bagan keren di sini .
Beri tahu sistem jenis skripnya. (Pilih salah satu)
Ketik nama program sebelum skrip. (mis. BASH /path/to/script.shatau PHP /path/to/script.php) Jika skrip memiliki ekstensi, seperti .php atau .py, itu adalah bagian dari nama skrip dan Anda harus memasukkannya.
Gunakan shebang , yang menurut saya Anda miliki ( #!/bin/bash) dalam contoh Anda. Jika Anda memilikinya sebagai baris pertama skrip Anda, sistem akan menggunakan program itu untuk mengeksekusi skrip. Tidak perlu mengetik program atau menggunakan ekstensi.
Gunakan shebang "portabel" . Anda juga dapat meminta sistem untuk memilih versi program yang pertama PATHdengan menggunakan #!/usr/bin/envdiikuti dengan nama program (misalnya #!/usr/bin/env bashatau #!/usr/bin/env python3). Ada pro dan kontra yang dibahas secara menyeluruh di sini .
Ringkasan yang cukup bagus. Mungkin pada contoh terakhir mengingatkan orang bahwa script.shdan script.phpmerupakan nama file literal dari skrip ini, dan bahwa jika Anda meletakkan ekstensi di nama file, Anda perlu memasukkannya saat Anda menjalankan skrip (dan sebaliknya; jika skrip tidak ' t memiliki ekstensi, jangan letakkan satu). Ini tidak seperti misalnya DOS di mana Anda dapat menghilangkan .batatau .exedari nama file, dan file perlu memiliki ekstensi dari kumpulan kecil agar dianggap dapat dieksekusi.
tripleee
1
Kesalahan umum pemula lain kesalahpahaman perbedaan antara path, /path, ./path, dan ~/path. Saya kira Anda mungkin tidak ingin menjelaskannya di sini, tetapi mungkin tautan ke penjelasan seperti ... oh dang, saya harus memposting ini.
Ini mengeksekusi skrip di shell saat ini, yang perlu dipanggil. Ini bukanlah hal yang diharapkan kebanyakan orang jika Anda hanya menjalankan skrip. Ini dapat memiliki efek samping pada lingkungan Anda yang ada.
Insinyur Perangkat Lunak
-2
Jika Anda berada di direktori atau folder tempat file skrip tersedia, cukup ubah izin file dalam mode yang dapat dieksekusi dengan melakukan
chmod +x your_filename.sh
Setelah itu Anda akan menjalankan script dengan menggunakan perintah berikut.
$ sudo ./your_filename.sh
Di atas "." mewakili direktori saat ini. Catatan! Jika Anda tidak berada di direktori tempat file skrip bash berada, maka Anda mengubah direktori tempat file tersebut berada dengan menggunakan
cd Directory_name/write the complete path
perintah. Jika tidak, skrip Anda tidak dapat dijalankan.
Semoga sepenuhnya semua akan melakukan ini karena saya menyebutkan semua konsep terkait tentang masalah khusus ini.
Hassan Shamshir
Seperti yang dijelaskan dalam jawaban lain di sini, sudoadalah salah dan berpotensi sangat salah jika Anda menggunakannya pada skrip yang tidak tepercaya yang menyalahgunakan kekuatan yang Anda berikan secara tidak perlu.
tripleee
Nasihat ke cdsuatu tempat sulit dimengerti, tapi mungkin juga salah.
chmod +x scriptname
dan kemudian./scriptname
.Jawaban:
$prompt: /path/to/script
dan tekan enter. Perhatikan bahwa Anda perlu memastikan skrip memiliki izin eksekusi.sumber
/path/to
direktori, misalnya dengancd /path/to
perintah, Anda dapat masuk./script
untuk menjalankan skrip Anda. Jangan lupa, dalam hal ini './' sebelum 'skrip'Cara lain untuk mengeksekusinya (kali ini tanpa mengatur izin eksekusi):
sumber
cd ke direktori yang berisi script, atau taruh di folder bin yang ada di $ PATH Anda
lalu ketik
jika dalam direktori yang sama atau
jika ada di folder bin.
sumber
./scriptname.sh
bekerja untuk saya tetapiscriptname.sh
memberiscriptname.sh: command not found
.-rwxr-xr-x
adalah izinnya.cd
mana saja sama sekali melakukan kesalahpahaman pemula umum lainnya. Kecuali skrip secara internal memiliki ketergantungan yang memerlukannya untuk dijalankan di direktori tertentu (seperti, perlu membaca file data yang skripnya tidak memberikan opsi untuk ditunjukkan) Anda tidak perlu kecd
mana pun untuk menjalankannya, dan sangat sering tidak mau.Anda bisa melakukan:
sh scriptname.sh
sumber
sh
merupakan symlink kebash
, atau jika skrip tidak menggunakan konstruksi khusus Bash. Dalam kasus sebelumnya, menggunakanbash
alih-alihsh
merupakan satu-satunya solusi portabel yang benar; dalam kasus terakhir, ini bukan jawaban yang benar untuk pertanyaan khusus ini, karena OP menanyakan saran untuk skrip Bash secara khusus. Mengabaikan jawaban yang salah adalah tidak bertanggung jawab; pengguna yang gagal memahami perbedaannya sering kali memposting di sini, dan perlu diperlihatkan mengapa jawaban "berhasil untuk saya" ini tidak berhasil untuk mereka.Pertama Anda harus membuatnya executable menggunakan:
chmod +x name_of_your_file_script
.Setelah Anda membuatnya dapat dieksekusi, Anda dapat menjalankannya menggunakan
./same_name_of_your_file_script
sumber
Ubah direktori Anda ke tempat skrip berada dengan menggunakan perintah cd
Lalu ketik
sumber
cd
kemana - mana; Anda dapat menentukan nama jalur kompleks yang sewenang-wenang sebagai argumen untukbash
; memang, program apa pun yang menggunakan argumen nama file bekerja dengan cara ini (atau yang mengerikan, rusak total).Ini adalah utas lama, tetapi saya kebetulan menemukannya dan saya terkejut belum ada yang memberikan jawaban lengkap. Jadi begini ...
Tutorial Menjalankan Script Baris Perintah!
T: Bagaimana saya menjalankan ini di Terminal?
Kebingungan dan Konflik:
sudo
melakukan semua ini. Perintah ini disediakan untuk menjalankan perintah sebagai pengguna lain atau pengguna 'root' (administrator). Posting yang bagus di sini .(Seseorang yang baru belajar bagaimana mengeksekusi skrip tidak boleh menggunakan perintah ini kecuali ada kebutuhan nyata, seperti menginstal program baru. Tempat yang baik untuk meletakkan skrip Anda ada di folder ~ / bin Anda. Anda bisa sampai di sana dengan mengetik
cd ~/bin
ataucd $HOME/bin
dari prompt terminal. Anda akan memiliki izin penuh di folder itu.)Beri tahu sistem lokasi skrip. (Pilih salah satu)
/path/to/script.sh
). Anda dapat memverifikasi jalur lengkap dengan mengetikpwd
atauecho $PWD
di terminal../
untuk jalur (mis./script.sh
.). Mudah.PATH
dan ketikkan saja namanya (misscript.sh
.). Anda dapat memverifikasi sistemPATH
dengan mengetikecho $PATH
atauecho -e ${PATH//:/\\n}
jika Anda ingin daftar yang lebih rapi.Beri tahu sistem bahwa skrip memiliki izin untuk dijalankan. (Pilih salah satu)
chmod +x /path/to/script.sh
di terminal.chmod 755 /path/to/script.sh
jika Anda lebih suka angka. Ada diskusi hebat dengan bagan keren di sini .Beri tahu sistem jenis skripnya. (Pilih salah satu)
BASH /path/to/script.sh
atauPHP /path/to/script.php
) Jika skrip memiliki ekstensi, seperti .php atau .py, itu adalah bagian dari nama skrip dan Anda harus memasukkannya.#!/bin/bash
) dalam contoh Anda. Jika Anda memilikinya sebagai baris pertama skrip Anda, sistem akan menggunakan program itu untuk mengeksekusi skrip. Tidak perlu mengetik program atau menggunakan ekstensi.PATH
dengan menggunakan#!/usr/bin/env
diikuti dengan nama program (misalnya#!/usr/bin/env bash
atau#!/usr/bin/env python3
). Ada pro dan kontra yang dibahas secara menyeluruh di sini .sumber
script.sh
danscript.php
merupakan nama file literal dari skrip ini, dan bahwa jika Anda meletakkan ekstensi di nama file, Anda perlu memasukkannya saat Anda menjalankan skrip (dan sebaliknya; jika skrip tidak ' t memiliki ekstensi, jangan letakkan satu). Ini tidak seperti misalnya DOS di mana Anda dapat menghilangkan.bat
atau.exe
dari nama file, dan file perlu memiliki ekstensi dari kumpulan kecil agar dianggap dapat dieksekusi.path
,/path
,./path
, dan~/path
. Saya kira Anda mungkin tidak ingin menjelaskannya di sini, tetapi mungkin tautan ke penjelasan seperti ... oh dang, saya harus memposting ini.Namun satu cara lagi
Apa arti titik itu?
sumber
Jika Anda berada di direktori atau folder tempat file skrip tersedia, cukup ubah izin file dalam mode yang dapat dieksekusi dengan melakukan
chmod +x your_filename.sh
Setelah itu Anda akan menjalankan script dengan menggunakan perintah berikut.
$ sudo ./your_filename.sh
Di atas "." mewakili direktori saat ini. Catatan! Jika Anda tidak berada di direktori tempat file skrip bash berada, maka Anda mengubah direktori tempat file tersebut berada dengan menggunakan
cd Directory_name/write the complete path
perintah. Jika tidak, skrip Anda tidak dapat dijalankan.
sumber
sudo
adalah salah dan berpotensi sangat salah jika Anda menggunakannya pada skrip yang tidak tepercaya yang menyalahgunakan kekuatan yang Anda berikan secara tidak perlu.cd
suatu tempat sulit dimengerti, tapi mungkin juga salah.