Saya memiliki skrip shell yang ingin saya jalankan tanpa menggunakan perintah "sh" atau "bash". Sebagai contoh:
Dari pada: sh script.sh
Saya ingin menggunakan: script.sh
Bagaimana saya bisa melakukan ini?
PS (i) Saya tidak banyak menggunakan skrip shell dan saya mencoba membaca tentang alias, tapi saya tidak mengerti bagaimana menggunakannya.
(ii) Saya juga membaca tentang menghubungkan skrip dengan file lain dalam variabel PATH. Saya menggunakan server universitas saya dan saya tidak memiliki izin untuk membuat file di lokasi tersebut.
$HOME/bin
- jika Anda belum memilikinya, tambahkan ke PATH Anda (dekat bagian depan). Letakkan skrip (dan program lain) yang ingin Anda jalankan langsung tanpa menentukan pathname di sini, atau symlinks di sini ke tempat program sebenarnya.mv example.sh example
dan kemudianexample
harus bekerja sendiri.Jawaban:
Tambahkan "shebang" di bagian atas file Anda:
Dan membuat file Anda dapat dieksekusi (
chmod +x script.sh
).Terakhir, ubah jalur Anda untuk menambahkan direktori tempat skrip Anda berada:
(biasanya, Anda ingin
$HOME/bin
menyimpan skrip Anda sendiri)sumber
source script.sh
bekerja dengan baik, atau lebih tepatnyasource <filename_without_any_extension_type>
source ./my-cool-script
(atau. ./my-cool-script
) akan mencemari sesi shell saat ini dengan variabel apa pun yang ditentukan dalam skrip. Sumber tidak boleh digunakan kecuali jika Anda ingin secara eksplisit memodifikasi sesi shell dengan mengatur lingkungan vars, mengubah direktori, dll. Bug yang sangat mengerikan dapat menghasilkan sebaliknya, karena variabel dari satu eksekusi skrip, jika dilakukan melalui sumber, dapat mempengaruhi eksekusi skrip lain../
, maka Anda mungkin memiliki tabrakan nama. Coba ganti nama.Ini adalah beberapa prasyarat untuk menggunakan nama skrip secara langsung:
she-bang (#!/bin/bash)
baris di bagian paling atas.chmod u+x scriptname
membuat skrip dapat dieksekusi. (di manascriptname
nama skrip Anda)/usr/local/bin
folder.Catatan: Alasan saya menyarankan untuk meletakkannya di bawah
/usr/local/bin
folder adalah karena kemungkinan besar path itu sudah ditambahkan ke folder AndaPATH variable
.Memperbarui:
Jika Anda tidak memiliki akses ke
/usr/local/bin
folder kemudian lakukan hal berikut:myscripts
.ls -lart
di direktori home Anda, untuk mengidentifikasi skrip start-up yang digunakan shell Anda. Itu harus.profile
atau.bashrc
.export set PATH=$PATH:~/myscript
.scriptname
.sumber
. .bashrc
. Artinya, cukup masukkan.
diikutispace
dan kemudian nama skrip start-up Anda.Pastikan itu dapat dieksekusi, menggunakan
chmod +x
. Secara default, direktori saat ini tidak ada di PATH Anda, jadi Anda perlu menjalankannya sebagai./script.sh
- atau merujuknya dengan jalur yang berkualitas. Atau, jika Anda benar-benar membutuhkannya sajascript.sh
, Anda perlu menambahkannya ke PATH Anda. (Anda mungkin tidak memiliki akses untuk memodifikasi jalur sistem, tetapi Anda hampir pasti dapat memodifikasi PATH lingkungan Anda saat ini.) Ini juga mengasumsikan bahwa skrip Anda dimulai dengan sesuatu seperti#!/bin/sh
.Anda juga masih dapat menggunakan alias, yang tidak benar-benar terkait dengan skrip shell tetapi hanya shell, dan sederhana seperti:
Yang akan memungkinkan Anda untuk hanya menggunakan
script.sh
(secara harfiah - ini tidak akan bekerja untuk*.sh
file lain ), bukansh script.sh
.sumber
alias
perintah pada prompt shell, dan kemudian alias akan tersedia untuk menjalankan perintah.Dalam contoh ini file akan dipanggil
myShell
Pertama-tama kita perlu membuat file ini, kita bisa memulai dengan mengetik berikut ini:
Perhatikan kami tidak meletakkan
.sh
ekstensi? Itu karena ketika kita menjalankannya dari terminal, kita hanya perlu mengetikmyShell
untuk menjalankan perintah kita!Sekarang, di nano, baris teratas HARUS
#!/bin/bash
Anda dapat meninggalkan baris baru sebelum melanjutkan.Untuk demonstrasi saya akan menambahkan dasar
Hello World!
responsJadi, saya ketik yang berikut ini:
Setelah itu contoh saya akan terlihat seperti ini:
Sekarang simpan file dan kemudian jalankan perintah ini:
Sekarang kita telah membuat file yang dapat dieksekusi kita dapat memindahkannya
/usr/bin/
dengan menggunakan perintah berikut:Hanya untuk memastikan bahwa mesin dapat menjalankannya dengan benar, kita perlu me-reboot mesin
Saya menggunakan
sudo shutdown -r now
Selamat! Perintah kami sudah selesai! Di terminal kita bisa mengetik
myShell
dan seharusnya mengatakanHello World!
sumber
/usr/bin
- banyak sistem menghemat/usr/local/bin
untuk tujuan ini dan cadangan/usr/bin
ketat untuk OS.sudo chmod
file Anda sendiri.Anda harus mengaktifkan bit yang dapat dieksekusi untuk program.
Maka Anda bisa menggunakannya
./script.sh
Anda dapat menambahkan folder ke PATH dalam
.bashrc
file Anda (terletak di direktori home Anda). Tambahkan baris ini ke akhir file:sumber
Anda dapat mengetikkan sudo install (nama skrip) / usr / local / bin / (apa yang ingin Anda ketik untuk mengeksekusi skrip tersebut)
ex:
sudo install quickcommit.sh /usr/local/bin/quickcommit
masukkan kata sandisekarang dapat berjalan tanpa .sh dan di direktori mana pun
sumber
Menambahkan . (direktori saat ini) ke variabel PATH Anda.
Anda dapat melakukan ini dengan mengedit file profil Anda.
letakkan baris berikut di file .profile Anda.
PATH=$PATH:.
Pastikan untuk menambahkan
#!/bin/bash
baris Shebang ( ) di awal skrip Anda dan buat skrip tersebut dapat dieksekusi (menggunakanchmod +x <File Name>
).sumber
Berikut ini skrip cadangan saya yang akan memberi Anda gagasan dan otomatisasi:
Server: Ubuntu 16.04 PHP: 7.0 Apache2, Mysql dll ...
ubah / home / pengguna ke direktori pengguna Anda dan ketik: backupscript di mana saja di terminal untuk menjalankan skrip! (dengan asumsi bahwa / usr / bin ada di jalur Anda)
sumber
Masukkan
"#!/bin/sh"
sebelum skrip. Kemudian simpan sebagaiscript.sh
contoh. salin ke$HOME/bin
atau$HOME/usr/bin
Direktori dapat berbeda di distro linux yang berbeda tetapi berakhir dengan
'bin'
dan berada di direktori homecd $HOME/bin
atau$HOME/usr/bin
Ketik
chmod 700 script.sh
Dan Anda dapat menjalankannya hanya dengan mengetik
run.sh
di terminal. Jika tidak berhasil, cobachmod +x run.sh
alih-alihchmod 700 run.sh
sumber
Jadikan file apa saja sebagai executable
Katakanlah Anda memiliki file yang dapat dieksekusi yang disebut migrate_linux_amd64 dan Anda ingin menjalankan file ini sebagai perintah seperti "migrasi"
Pastikan Anda telah menjalankan hak istimewa pada file
-rwxr-xr-x 1 oracle oinstall 7473971 May 18 2017 migrate.linux-amd64
jika tidak, jalankan
chmod +x migrate.linux-amd64
Kemudian salin file Anda ke
/usr/local/bin
. Direktori ini dimiliki oleh root, gunakan sudo atau alihkan ke root dan lakukan operasi berikutsumber
Hanya:
sumber