sh /path/to/script akan menelurkan shell baru dan menjalankan skripnya terlepas dari shell Anda saat ini. source
(.) perintah akan memanggil semua perintah dalam skrip di Shell saat ini. Jika skrip memanggil exit
misalnya, Anda akan kehilangan shell saat ini. Karena itu, biasanya lebih aman untuk memanggil skrip di shell terpisah dengan sh atau mengeksekusinya sebagai binari menggunakan yang lengkap (dimulai dengan /
) atau jalur relatif (./
). Jika dipanggil sebagai binari, mereka akan dieksekusi dengan juru bahasa yang ditentukan (#!/bin/bash
, misalnya).
Adapun untuk mengetahui apakah skrip akan menemukan file yang dibutuhkannya atau tidak, tidak ada jawaban yang baik, selain melihat skrip untuk mengetahui fungsinya. Sebagai opsi, Anda selalu dapat membuka folder skrip dalam sub-proses tanpa meninggalkan folder Anda saat ini:
(cd /wherever/ ; sh script.sh)
Anda pasti bisa melakukannya (dengan penyesuaian yang disebutkan orang lain seperti sudo sh /pathto/script.sh
atau ./script.sh
). Namun, saya melakukan salah satu dari beberapa hal untuk menjalankannya di seluruh sistem agar tidak mengkhawatirkan dir dan menghemat pengetikan tambahan yang tidak berguna.
1) Symlink ke /usr/bin
ln -s /home/username/Scripts/name.sh /usr/bin/name
(pastikan tidak ada nama yang tumpang tindih di sana, karena Anda jelas akan menimpanya.) Ini juga memungkinkan saya menyimpannya di folder pengembangan sehingga saya dapat menyesuaikan seperlunya.
2) Tambahkan direktori Skrip ke jalur Anda (menggunakan .bash_profile - atau profil apa pun yang Anda miliki di shell Anda)
PATH=/path/to/scripts/:$PATH
3) Buat Alias di .bash_profile
di ~/.bash_profile
tambahkan sesuatu seperti:
alias l="ls -l"
Seperti yang Anda ketahui, sintaksnya hanyalah alias, angka yang ingin Anda gunakan sebagai perintah, perintah. Jadi mengetikkan "l" di mana saja di terminal akan menghasilkan ls -l
Jika Anda ingin sudo, cukup alias sl="sudo ls -l"
untuk dicatat sendiri l vs sl (sebagai contoh yang tidak berguna).
Apa pun itu, Anda cukup mengetikkan sudo nameofscript
dan berada di jalan Anda. Tidak perlu dipusingkan dengan ./ atau . atau sh, dll. Cukup tandai sebagai yang dapat dieksekusi terlebih dahulu :D
Saya biasanya melakukan seperti yang Anda katakan
sh /path/to/script
Dan untuk menjalankannya sebagai root/superuser
sudo sh /path/to/script
Direktori Anda saat ini hanya penting jika skrip menganggap Anda berada di folder yang sama dengannya. Saya berasumsi sebagian besar skrip tidak melakukan ini dan Anda dapat menyimpan untuk menjalankannya seperti di atas.