GNU/Linux >> Belajar Linux >  >> Linux

Menjalankan skrip dari direktori lain

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.


Linux
  1. CentOS:Salin direktori ke direktori lain

  2. Bagaimana cara menghapus string apa pun dari file melalui skrip Shell?

  3. bagaimana cara memodifikasi /etc/hosts dari skrip shell?

  1. Bagaimana Memindahkan Semua File (termasuk Tersembunyi) Dari Satu Direktori Ke Yang Lain?

  2. Shell mana yang saya jalankan?

  3. Array Asosiatif Dalam Skrip Shell?

  1. Penguncian yang Benar Dalam Skrip Shell?

  2. Dari Mana Skrip Shell Dijalankan?

  3. Cara menjalankan skrip Python dari shell