Apa perbedaan antara ~ / .profile dan ~ / .bash_profile?

Jawaban:

44

Itu .profileadalah konfigurasi profil asli untuk shell Bourne (alias, sh). bash, menjadi shell yang kompatibel dengan Bourne akan membaca dan menggunakannya. Di .bash_profilesisi lain hanya dibaca oleh bash. Ini dimaksudkan untuk perintah yang tidak sesuai dengan shell Bourne standar.

bahamat
sumber
Jika saya salah, perbaiki saya .. .profile digunakan oleh semua shell yang kompatibel dengan Bourne sedangkan .bash_profile hanya digunakan oleh bash .. apakah saya benar?
lakesh
2
@lakesh: Ya, shell yang menyediakan kompatibilitas bourne akan membaca .profile. Misalnya, bashdan kshtetapi tidak cshatau tcsh. Dan zshmenyediakan keduanya shdan cshkompatibilitas sehingga akan membaca keduanya .profiledan .login, serta zshfile dot tertentu.
bahamat
apakah ada tutorial untuk membaca tentang hal-hal bash dan ksh ini? tidak pernah mendengar ini sebelumnya ...
lakesh
4
Anda bisa mulai dengan Sejarah Shell UNIX .
bahamat
25

Aslinya shbersumber .profilepada startup.

bashakan mencoba untuk sumber .bash_profilepertama, tetapi jika itu tidak ada, itu akan sumber .profile1 .

Perhatikan bahwa jika bashdimulai sebagai sh(misalnya /bin/shtautan ke /bin/bash) atau dimulai dengan --posixbendera, ia mencoba untuk meniru sh, dan hanya membaca .profile.

Catatan kaki:

  1. Sebenarnya, yang pertama dari .bash_profile, .bash_login,.profile

Lihat juga:

Mikel
sumber
2
Luar biasa .. Terima kasih ... terutama untuk referensi ...
lakesh
10

Anda tahu banyak kerang ada di dunia UNIX, tetapi kebanyakan dari mereka adalah:

  • Bourne shell : /bin/sh(Penemu: Stephen Bourne)
  • BASH (Bourne Again Shell): /bin/bash(Penemu: Brian Fox, di bawah proyek GNU) (shell yang kuat)
  • C shell : /bin/csh(Penemu: Bill Joy, Penemu TCP / IP Stack)
  • Korn shell : /bin/ksh(Penemu: David Korn di bawah Bell Labs)
  • Z shell : /bin/zsh(shell Powerfull)
  • TENEX C shell : /bin/tcsh(berasal dari C Shell)
  • Debian Almquist shell : /bin/dash(Berasal dari shell Almquist (abu di bawah proyek NetBSD)) (Dash lahir dari lenny)

Tetapi pertanyaan Anda adalah tentang ~/.bash_profiledan ~/.profile:

Ketika Anda masuk ke mesin UNIX, itu akan diarahkan ke direktori home Anda, sesuai dengan shell yang dipilih oleh administrator di bidang terakhir /etc/passwdseperti:

mohsen:x:1000:1000:Mohsen Pahlevanzadeh,,,:/home/mohsen:/bin/bash

Shell Anda berjalan, dan secara default setiap shell memiliki file yang ditetapkan untuk logindan logout. Saat Anda masuk di bash, ~/.profilejalankan dan saat Anda logout, ~/.bash_logoutdijalankan. ~/.bash_historyfile menjaga perintah input Anda.

File inisialisasi di setiap shell

TENEX C shell

  • ~/.login Saat Anda login
  • ~/.logout Saat Anda keluar
  • ~/.tcshrcsama seperti ~./bashrcdi bash

Anda dapat mengatur variabel $histfilesebagai nama file histori dan variabel $historysebagai jumlah perintah untuk disimpan.

Z shell

Memang itu shell yang kuat dan jika Anda mendapatkan waktu luang, pastikan bermigrasi ke sana.

Kecuali shell lain, shell Z memiliki banyak file konfigurasi dan file inisialisasi, hanya saya tulis:

$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
/tmp/zsh*
/etc/zshenv
/etc/zprofile
/etc/zshrc
/etc/zlogin

Catatan: jika $ZDOTDIRtidak disetel, setel rumah.

C shell

Catatan: TENEX C shell bercabang dari shell C. C shell didukung oleh BSD. Jika Anda terbiasa dengan pemrograman bahasa C, Anda harus merasa nyaman karena sintaksinya mirip.

~/.login
~/.cshrc
~/.logout

Catatan: csh sudah tua. Gunakan tcsh sebagai gantinya.

Korn Shell

  • ~/.profile
  • file rc: ditentukan pengguna
  • file logout: N / A

Bourne Again SHell (BASH)

Ini shell yang sangat kuat dan lahir di bawah proyek GNU dan bercabang oleh Bourne Shell.

~/.bash_login
~/.bash_logout
~/.bashrc
~/.bash_profile
~/.bash_history

Saat Anda masuk, bash jalankan ~/.bash_profiledan ~/.bash_profilejalankan ~/.bashrc. Memang ~/.bashrcbukan file inisialisasi bash, karena bash tidak menjalankannya.

Shell Bourne

Sudah mati. Bahkan ketika Anda menggunakan man sh, Anda melihat manual dash. [Catatan Editor: bit tentang ini dashhanya berlaku untuk distro berbasis Debian dan Debian seperti Ubuntu.]

Jawabanmu

~/.bash_profilebekerja di bawah bash, tetapi ~/.profilebekerja di bawah shell Bourne dan Korn.

PersianGulf
sumber
2
Chet Ramey adalah pengembang utama untuk Bash.
tripleee
4

Shell login hanyalah shell yang bisa Anda masuki melalui ssh atau di konsol. Shell non-login adalah shell yang seseorang tidak dapat login juga. Shell non-login sering digunakan oleh program / layanan sistem.

Adapun poin ketiga Anda. Memang benar .bashrcdieksekusi pada setiap instance dari shell. Namun .bash_profilehanya digunakan saat login. Demikian alasan kedua file terpisah.

.profileadalah untuk hal-hal yang tidak secara spesifik terkait dengan Bash, seperti variabel lingkungan $ PATH juga harus tersedia kapan saja. .bash_profilekhusus untuk shell atau shell yang dieksekusi saat login.

anzenketh
sumber
perbedaan antara ~ / .profile dan ~ / .bash_profile?
lakesh
2
.profile adalah untuk hal-hal yang tidak secara spesifik terkait dengan Bash, seperti variabel lingkungan PATH, juga harus tersedia kapan saja. .bash_profile khusus untuk shell login atau shell yang dieksekusi saat login.
anzenketh
tambahkan pernyataan itu ke jawaban Anda .... karena apa pertanyaan saya adalah ....
lakesh
Hah? Itu bahkan tidak menjawab pertanyaan?
Mikel