Cara lain adalah dengan memanggil juru bahasa dan meneruskan path ke skrip untuk itu:
/bin/sh /path/to/script
Titik dan sumbernya setara. (EDIT: tidak, mereka tidak: seperti yang ditunjukkan KeithB dalam komentar atas jawaban lain, "." Hanya bekerja di shell terkait bash, di mana "source" bekerja di shell terkait bash dan csh.) Ia menjalankan skrip di -place (seolah-olah Anda menyalin dan menempelkan skrip di sana). Ini berarti bahwa setiap fungsi dan variabel non-lokal dalam skrip tetap ada. Ini juga berarti jika skrip melakukan cd ke direktori, Anda akan tetap berada di sana ketika selesai.
Cara lain menjalankan skrip akan menjalankannya dalam subkulitnya sendiri. Variabel dalam skrip tidak masih hidup saat selesai. Jika skrip mengubah direktori, maka skrip tidak memengaruhi lingkungan panggilan.
/ path / to / script dan / bin / sh script sedikit berbeda. Biasanya, sebuah skrip memiliki "shebang" di awal yang terlihat seperti ini:
#! /bin/bash
Ini adalah jalan menuju juru bahasa skrip. Jika ia menentukan juru bahasa yang berbeda dari yang Anda lakukan ketika Anda menjalankannya, maka itu mungkin berperilaku berbeda (atau mungkin tidak bekerja sama sekali).
Misalnya, skrip Perl dan skrip Ruby dimulai dengan (masing-masing):
#! /bin/perl
dan
#! /bin/ruby
Jika Anda menjalankan salah satu skrip tersebut dengan menjalankan /bin/sh script
, maka skrip tersebut tidak akan berfungsi sama sekali.
Ubuntu sebenarnya tidak menggunakan bash shell, tetapi yang sangat mirip disebut dasbor. Skrip yang memerlukan bash mungkin berfungsi sedikit salah ketika dipanggil dengan melakukan /bin/sh script
karena Anda baru saja memanggil skrip bash menggunakan penerjemah dasbor.
Perbedaan kecil lainnya antara memanggil skrip secara langsung dan meneruskan path skrip ke penerjemah adalah skrip harus ditandai dapat dieksekusi untuk menjalankannya secara langsung, tetapi tidak menjalankannya dengan meneruskan path ke interpreter.
Variasi kecil lainnya: Anda dapat mengawali salah satu cara ini untuk menjalankan skrip dengan eval, jadi, Anda dapat memilikinya
eval sh script
eval script
eval . script
dan seterusnya. Sebenarnya tidak mengubah apa pun, tapi saya pikir saya akan memasukkannya untuk ketelitian.