Saya memiliki fungsi yang mengubah zaman ke tanggal. Inilah definisi
date1(){
date -d @$1
}
Saya ingin dapat menulis:
$ date1 xxxyyy
Di mana xxxyyy adalah parameter yang saya masukkan ke fungsi saya sehingga saya bisa mendapatkan tanggal yang sesuai. Saya mengerti bahwa saya harus menambahkannya baik .bash_profile
, .profile
atau .bashrc
kemudian sumber itu:
$ source file
Tapi, saya tidak yakin file yang akan dimasukkan. Saat ini, saya memilikinya .profile
. Tetapi untuk menjalankannya, saya harus melakukannya source .profile
setiap waktu.
Idealnya, itu harus membuatnya tersedia, ketika komputer dinyalakan seperti variabel lingkungan.
Jawaban:
Dari
man bash
:Dengan kata lain, Anda dapat meletakkannya di salah satu dari
~/.bash_profile
,~/.bash_login
atau~/.profile
, atau file apa sajasource
oleh salah satu dari mereka . Biasanya~/.profile
akan sumber~/.bashrc
, yang merupakan "file inisialisasi pribadi, dieksekusi untuk shell login."Untuk mengaktifkannya, jalankan shell baru, jalankan
exec $SHELL
atau jalankansource ~/.bashrc
.sumber
.bash_profile
maka saya harus melakukansource ~/.bash_profile
setiap kali saya membuka terminal dengan cara pintasCtrl+Alt+T
.source ~/.bash_profile
setiap waktu maka itu indikasi bahwa pengaturan Bash Anda entah bagaimana tidak standar atau rusak (sesuai denganman bash
output yang disebutkan). Apakah Anda yakin Anda benar-benar menjalankan Bash? Misalnya, apakahecho $BASHPID
mencetak sesuatu?#!/bin/sh
ke atas.profile
untuk mendefinisikan suatu fungsi?Setelah Anda menentukan fungsi di Anda
.profile
, tambahkanexport -f date1
. Ini akan mengekspor fungsi untuk digunakan oleh shell login Anda.sumber
Penyesuaian untuk shell interaktif masuk ke
~/.bashrc
. Hal-hal yang ingin Anda jalankan ketika Anda masuk~/.profile
(atau~/.bash_profile
, tetapi seringkali tidak dimuat saat masuk secara grafis).Masukkan definisi fungsi ini ke dalam
~/.bashrc
.Karena bash tidak dimuat
.bashrc
saat itu adalah shell login, paksakan untuk melakukannya: tulis~/.bash_profile
mengandungyaitu memuat
~/.profile
, dan juga memuat~/.bashrc
jika shell bersifat interaktif.Lihat Alternatif untuk .bashrc dan tulisan yang tertaut di sana.
sumber
csh dan tcsh tidak mendukung fungsi seperti bash tetapi Anda dapat melakukannya.
Sebagai contoh, inilah fungsi sederhana untuk mencetak beberapa teks
meneruskan argumen ke skrip
melakukan multi-line code seperti pernyataan if agak rumit tapi begini saja.
Anda masih harus eval tetapi bagian yang paling kompleks adalah melakukan
\!:[x]
sintaks untuk mendapatkan input dari baris perintah.Itu seharusnya cukup untuk membuat Anda beres.
sumber
Anda dapat mengalihkan semua fungsi saat ini ke bashrc dengan mengeset .
Sebagai contoh, inilah cara saya menambahkan fungsi perintah openstack dengan parameter opsional, ke dalam bashrc:
Sekarang disimpan untuk sesi mendatang, dan dapat digunakan seperti:
atau
sumber
Poin 18: Dalam ingatanku yang lebih lama ketika seorang admin, belajar ksh dan bash adalah kina sebaliknya. 1: - / etc / konten profil adalah sysWide. / etc / skel berisi file yang diberikan ke akun baru. Karena Bash sekarang menjadi yang paling umum dari semua distro. yang berikutnya adalah 2: - ~ /. profil sebagai standar sistem kemudian dalam isi. profil "jika ada" .bash_profile akan meletakkan -> 3: - .bash_profile 4: - .bash_login 5: - .bashrc .bash_aliases akan berada di pikiran saya urutan yang lebih benar, mengatur lingkungan Terminal dan Shell standar dan .bash_login biasa tidak pernah ditemukan atau ada (kustom per pengguna). Dengan .profile $ PATH menjadi utama jika.
Saya menemukan sekarang juga menambahkan .bash_profile .profile masih mendominasi dan tidak menghormati keberadaan .bash_profile. Seiring dengan info tajuk, tidak ada yang memperbarui yaitu: bash startup Sampel - bahwa struktur direktori tidak lagi - bersama dengan contoh dan atau file gzip. Jadi pembaruan ke Gnu-Bash sudah beres
sumber