Pertanyaan Di mana saya bisa menempatkan fungsi shell yang ditentukan pengguna?


Saya berencana untuk membuat fungsi yang akan menyederhanakan hal-hal untuk saya. Fungsinya akan seperti itu

function lazymode()
{
echo "Hello World!";
}

jadi ketika saya menggunakan perintah lazymode dalam kulit , itu akan menampilkan Hello World!.

File apa yang harus saya masukkan fungsi yang ditentukan pengguna?


10
2017-09-12 08:09


asal




Jawaban:


Tergantung fungsinya. Jika itu hanya super-sederhana seperti Anda dapat membuat alias atau memasukkan fungsi ~/.bashrc (file yang bash memuat ketika mulai).

Jika Anda membuat sesuatu yang sedikit lebih gemuk, mungkin lebih masuk akal untuk membuat skrip yang dapat dieksekusi sendiri ~/bin/ yang tidak akan ada secara default (itu hanya direktori) tetapi harus di jalan Anda. Ingat untuk ini file perlu dieksekusi (chmod +x filename) dan mulai dengan yang benar #!/bin/bash bait.

Rute kedua memiliki beberapa manfaat yang jelas:

  • Lebih mudah untuk melihat apa yang tersedia
  • Kesalahan sintaks tidak akan memadati profil Anda
  • Anda tidak perlu menyimpan kembali konfigurasi bash Anda jika Anda mengubah skripnya
  • Ini tersedia untuk shell apapun selama path lengkap digunakan atau ~/bin/ berada di jalur untuk shell itu juga (yang seharusnya dalam banyak kasus AFAIK).

10
2017-09-12 08:13



petunjuk bagus yang Anda miliki di sana. Terima kasih - Abel Melquiades Callejo
Saya menggunakan opsi nanti. Fungsi saya berisi perintah yang menghapus file, wget's something, mengeksekusi perintah javac dan java. dan ketika saya mencobanya di gnome-terminal, itu tidak berfungsi dengan baik. Apakah menurut Anda ada masalah? - Abel Melquiades Callejo
Apa fungsinya? - Oli♦
Itu sudah diperbaiki. Diperbaiki melalui jawaban ini - Abel Melquiades Callejo
umm ... seharusnya skrip pengguna tidak berada di /usr/local/bin bukannya mengacaukan $PATH? - Braiam


Pilihan terbaik adalah ~/.bashrc mengajukan.

Anda dapat menulis definisi fungsi shell Anda langsung di ~/.bashrc file, atau, jika Anda memiliki banyak dari mereka dan tidak ingin kekacauan Anda ~/.bashrc file, Anda dapat menempatkan mereka semua dalam file lain yang Anda pilih - pastikan untuk sumber bahwa file di Anda ~/.bashrc mengajukan. Misalnya, jika file dengan fungsi Anda diberi nama bash_functions, tambahkan saja ~/.bashrc file baris:

if [[ -f /path/to/bash_functions ]]; then
    source /path/to/bash_functions
fi

atau, dengan kata lain:

if [[ -f /path/to/bash_functions ]]; then
    . /path/to/bash_functions
fi

Dimana . hanyalah representasi simbolis dari source. Itu if tes memastikan file /path/to/bash_functions ada sebelum mencoba sumbernya.

Teknik ini sangat mirip dengan membangun alias di ~/.bashrc dengan membuat file bernama ~/.bash_aliases dan menggunakan sintaks yang serupa dengan itu di atas ~/.bashrc untuk menguji keberadaannya dan kemudian sumbernya.


3
2017-09-12 08:10



terima kasih, itu berhasil. by the way, apa bedanya dengan .profile? di beberapa linux, saya tidak bisa meletakkan fungsi di bashrc - Abel Melquiades Callejo
~/.profile file dieksekusi oleh interpreter perintah untuk shell login. Ketika Anda menggunakan GUI dan Anda membuka terminal, file itu tidak dieksekusi karena Anda akan berada di shell tidak login. - Radu Rădeanu