Apa perbedaan antara .profile dan .bash_profile dan mengapa saya tidak memiliki file .profile di sistem saya?

12

Jadi saya cukup baru di Linux dan baru saja menginstal Fedora 19 di netbook saya. Saya ingin memiliki pemahaman yang lebih dalam tentang Linux dan CLI jadi saya sekarang membaca Learn Linux: The Hard Way .

Dalam latihan 3 penulis memberikan perintah berikut:

  • ls -al
  • kucing. profil

Saya mencoba mengikuti petunjuk ini tetapi tidak berhasil. Tidak ada file profil di direktori nama pengguna saya seperti yang saya lihat dari ls -al. Dari apa yang saya pelajari file .bash_profile dan .profile praktis sama. Satu-satunya perbedaan yang saya simpulkan dari penelitian saya adalah .bash_profile diperiksa terlebih dahulu.

Yang tidak saya mengerti adalah mengapa ada beberapa file untuk fungsi yang sama di Linux, mengapa Penulis menggunakan .profile dan bukan .bash_profile (jika saya mengerti dengan benar .profile tidak akan dibaca ketika sistem menemukan .bash_profile terlebih dahulu) dan mengapa saya tidak memiliki file profil di sistem saya?

Emiroe
sumber
Lihat juga unix.stackexchange.com/questions/45684/… yang menjawab bagian dari pertanyaan Anda. Lebih jauh, unix.stackexchange.com/questions/67940/… menunjukkan salah satu alasan mengapa berbagai file ini dapat menyebabkan kebingungan untuk hal-hal yang lebih maju daripada yang mungkin Anda hadapi.
msw

Jawaban:

13

The .profiletanggal kembali ke shell Bourne asli dikenal sebagai sh. Karena shell GNU bash(tergantung pada opsinya) adalah superset dari shell Bourne, kedua shell dapat menggunakan file startup yang sama. Artinya, asalkan hanya shperintah yang dimasukkan.profile

Misalnya, aliasadalah perintah bawaan yang valid bashtetapi tidak diketahui sh. Karena itu, jika Anda hanya punya .profiledi direktori home Anda dan memasukkan aliaspernyataan di dalamnya, shakan mengeluh. Jadi ada file spesifik bash yang memiliki perintah inisialisasi shell yang akan dibaca oleh bash jika dan hanya jika tidak ada .profilefile.

Sebenarnya itu sedikit penyederhanaan yang berlebihan dalam beberapa instalasi, dan saya tidak terbiasa dengan Fedora. Di bawah bash, /etc/profiledibaca oleh shell sebelum ada file di direktori home Anda. Jika ada skrip inisialisasi sistem yang luas, ia sering mengatakan sesuatu seperti

if there is a $HOME/.profile:
   source it
elseif bash is my shell and there is a $HOME/.bash_profile:
   source that

Kenapa begitu? Upaya kompatibilitas di dekade dialek shell. Mengapa tutorial ditulis seperti itu? Cangkang Bourne tidak sering digunakan lagi dan beberapa orang bahkan tidak tahu bahwa ada cangkang mirip Bourne selain bash. Bahkan ketika sintaks Bourne (terbatas) digunakan untuk kompatibilitas lintas-platform yang lebih besar sering dijalankan oleh dashatau bash dalam mode kompatibilitas POSIX. Memang, sumber shell Bourne yang sebenarnya mungkin merupakan komponen hak cipta dari Unix System V yang tampaknya menjadi milik Novell sekarang, tetapi saya tidak tahu apa, jika ada, apa yang mereka lakukan dengannya.

Untuk pengguna awal, gunakan salah satu $HOME/.profileatau $HOME/.bash_profiletidak keduanya dan Anda akan baik-baik saja. Karena Anda sudah memiliki .bash_profilepekerjaan dengan itu karena mungkin ada hal-hal khusus sistem di dalamnya yang perlu instalasi Anda.

msw
sumber
Terima kasih! Kurasa aku memahaminya sedikit lebih baik sekarang, masih banyak yang harus kupelajari.
Emiroe
Banyak dari itu adalah sampah sejarah yang Anda benar-benar tidak perlu tahu; hanya berkonsentrasi pada paragraf terakhir dari jawaban saya. Juga karena Anda baru di sini, Anda dapat memilih dan menerima jawaban yang merupakan bentuk tertinggi dari ucapan terima kasih di sini.
msw
Ya, saya sudah menerima jawaban Anda. Saya tidak berharap seseorang melakukan begitu banyak usaha di dalamnya jadi saya sangat berterima kasih. Saya menerima jawaban Anda, tetapi saya tidak bisa menjawabnya karena memerlukan 15 reputasi dan saya hanya punya 8. Maaf untuk itu!
Emiroe
Saya lupa tentang batas 15 rep; kamu benar.
msw
4
Bonus sejarah # 1 : cangkang Bourne yang sebenarnya akhirnya lolos dari penawanan. minnie.tuhs.org memiliki kode sumber lengkap V7 (rilis unix pertama dengan shell Bourne), dan heirloom.sourceforge.net memiliki versi yang sedikit lebih baru dari shell Bourne yang sebenarnya masih dapat digunakan. Bonus sejarah # 2 : aliasdiperlukan oleh POSIX sehingga tidak banyak shyang tidak mengetahuinya.