Saya menggunakan Linux Mint. Shell login saya ( cat /etc/passwd | grep myUserName
) adalah bash.
Setelah saya memulai lingkungan desktop grafis saya dan menjalankan emulator terminal darinya, saya dapat melihat bahwa .bash_profile
itu tidak bersumber (vars lingkungan yang diedit export
di dalamnya tidak disetel). Tetapi jika saya masuk dari konsol teks ( ctrl+ alt+ F1) atau dijalankan secara manual bash -l
dari terminal emulator, .bash_profile
berfungsi dengan baik.
Apakah saya salah ketika saya berpikir bahwa .bash_profile
seharusnya bersumber ketika X mulai dan semua export
vars harus tersedia di terminal, berjalan dari X?
PS Menempatkan segala sesuatu di dalam .bashrc
dan sumbernya dari .bash_profile
itu bukan ide yang baik ( https://stackoverflow.com/questions/902946/ ): hal-hal lingkungan harus bersumber hanya sekali.
.bash_profile
adalah skrip konfigurasi startup dari bash. Tidak ada standar yang mewajibkan X untuk sumber.bash_profile
.Apa yang Anda pikirkan lebih tepatnya
.profile
. Awalnya itu adalah file konfigurasi startup dari bourne shell (sh). Saat ini banyak distribusi yang mengatur lingkungan desktop mereka ke sumber.profile
. Perhatikan bahwa ini juga bukan standar, tetapi tampaknya menjadi sebuah konvensi.Debian digunakan untuk sumber
.profile
pada login grafis ( halaman wiki pada 2013 ) sekarang tidak ( halaman wiki pada 2016 ).Sumber-sumber lengkung
.xprofile
pada login grafis ( halaman wiki pada 2013 ).Ubuntu digunakan untuk mencegah penggunaan
.profile
( halaman wiki pada 2013 ) sekarang tidak mencegah lagi ( halaman wiki pada 2016 ).Mengenai pertanyaan Anda yang lain: Mengapa ~ / .bash_profile saya tidak berfungsi? Itulah perilaku yang diharapkan.
Singkatnya, perilaku tersebut adalah sebagai berikut:
~/.profile
~/.bashrc
Untuk lebih jelasnya lihat jawaban saya untuk pertanyaan serupa di askubuntu: https://askubuntu.com/questions/132276/configure-gnome-terminal-to-start-bash-as-a-login-shell-doesnt-read-bashrc / 132319 # 132319
sumber
~/.bashrc
" adalah saran yang buruk: Anda hanya.bashrc
boleh membaca dari shell interaktif . Anda telah melewatkan masalah inti di sini yaitu ketika masuk di bawah X, tidak ada instance login dari bash (di sebagian besar tampilan manajer / kombinasi lingkungan desktop, termasuk yang jelas milik AntonioK)..bashrc
", saya selalu bermaksud untuk shell interaktif. Saya sudah mengklarifikasi bagian itu. Saya harap ini tidak menyesatkan lagi..profile
( tautan ) " Wiki itu pernah (secara tidak masuk akal) mengecilkan hal itu; itu sudah diperbaiki. (Catatan/etc/profile
tetap tidak disarankan untuk penugasan di seluruh sistem, dalam preferensi untuk menambahkan skrip ke/etc/profile.d
.).profile
File per pengguna sekarang disajikan sebagai salah satu cara yang disarankan untuk mengatur variabel lingkungan per-pengguna: "File yang cocok untuk pengaturan variabel lingkungan yang harus memengaruhi hanya pengguna tertentu (bukan sistem secara keseluruhan) adalah ~ / .pam_environment dan ~ / .profile . "~/.profile
untuk login grafis dan~/.xsessionrc
harus digunakan sebagai gantinya.Dalam pertanyaan Anda, Anda merujuk ke https://stackoverflow.com/questions/902946/ sebagai merekomendasikan untuk tidak sumber, ketika jawaban yang diterima mengatur untuk
Memasukkan semuanya
.profile
tidak bekerja untuk saya di Linux Mint. Menggunakan.bashrc
bekerja dengan baik.sumber
Beberapa masalah muncul ketika mencoba memuat ulang / source ~ / .profile file. [Ini merujuk ke Ubuntu linux - dalam beberapa kasus detail dari perintah akan berbeda]
Iklan. 1)
Menjalankan ini secara langsung di terminal berarti bahwa tidak akan ada subkulit yang dibuat. Jadi, Anda dapat menggunakan dua perintah:
atau
Dalam kedua kasus ini akan memperbarui lingkungan dengan isi file profil.
Iklan 2) Anda dapat memulai skrip bash apa pun dengan menelepon
atau
Dalam kasus pertama ini akan membuat subkulit yang tidak akan memengaruhi variabel lingkungan sistem Anda dan hanya akan terlihat pada proses subkulit. Setelah menyelesaikan perintah subkulit, tidak ada ekspor dll yang akan diterapkan. INI ADALAH KESALAHAN UMUM DAN MENYEBABKAN BANYAK PENGEMBANG UNTUK MENURUNKAN BANYAK WAKTU.
Agar perubahan yang diterapkan dalam skrip Anda memiliki efek untuk lingkungan global, skrip harus dijalankan
perintah.
Untuk memastikan bahwa skrip Anda tidak dijalankan di subshel, Anda dapat menggunakan fungsi ini. (Sekali lagi contoh untuk shell Ubuntu)
Saya harap ini menghapus beberapa kesalahpahaman umum! : D Semoga Sukses!
sumber
Solusi sederhananya adalah menjadikan terminal sebagai terminal login. Untuk terminal Gnome di bawah 'Tile and Command' dari profil default Anda dapat mencentang kotak "Run command as a shell login". Artikel ini menjelaskan perbedaan antara shell login dan yang tidak.
sumber