. profil tidak berjalan ketika saya memulai terminal bash

15

Ketika saya memulai terminal bash, profil saya tidak dieksekusi. Saya tidak punya ~ / .bash_profile atau ~ / .bash_login, jadi .profile seharusnya dijalankan, kan? Apa lagi yang bisa salah?

David Doria
sumber

Jawaban:

23

Ini bukan shell login.

Jika shell adalah shell login, ia akan mencari .bash_profile jika ada, lalu .profile. Kerang lain mencari .bashrc

Jadi, Anda bisa meletakkan hal-hal yang Anda inginkan di setiap instance shell di .bashrc, dan mungkin memiliki referensi yang sumber .bashrc di .profile.

Jadi: .bashrc:

stuff you want

akhir profil.:

[ -n "$BASH" ] && [ -f ~/.bashrc ] && . ~/.bashrc
Homolka yang kaya
sumber
Jadi ketika saya menjalankan 'konsole' di KDE, itu adalah shell non-login, kan? Di komputer lain saya pasti memasukkan banyak hal. Profil dan membuatnya bekerja ketika saya membuka terminal seperti ini - saya kira saya tidak mengerti ketika Anda ingin sesuatu yang berbeda terjadi pada saat login vs ketika Anda membuka terminal?
David Doria
@ Davidvidoria itu tergantung, saya telah mengubah konfigurasi atau membuat alias untuk apa konsole berjalan, untuk membuatnya berjalan bash --login. Dalam kasus Anda tampaknya hanya menjalankan bash, yang secara default tidak akan memicu shell login
Rich Homolka
Jika Anda menggunakan LightDM, itu mungkin alasannya. Manajer tampilan lain seperti sumber GDM dan KDM. Profil saat login, tetapi LightDM tidak (sesuai desain). Lihat bugs.debian.org/cgi-bin/bugreport.cgi?bug=636108
WakiMiko
Saya menggunakan KDM.
David Doria
2
Jika Anda menggunakan Terminal Gnome, Anda dapat melakukan Edit-> Preferensi Profil, buka tab Judul dan Perintah, dan centang "Jalankan perintah sebagai shell login". Kemudian akan sumber .bash_profile atau .profile Anda setiap kali Anda membuka terminal, seperti yang diharapkan.
Lambart
3

coba gunakan ~/.bashrcsaja.

goweon
sumber
1

Jika Anda menggunakan desktop grafis, .profile harus bersumber dari manajer desktop Anda. Lightdm tidak mencari .profile sekarang, setidaknya di Ubuntu. Lihat: https://bugs.launchpad.net/ubuntu/+source/lightdm/+bug/794315

Dengan kdm, dan Kubuntu-12.04, file / etc / kde4 / kdm / Xsession diambil dari sumbernya, yang termasuk dalam file .profile. Kubuntu-12.10 mungkin akan menggunakan lightdm. Ubuntu 12.04 menggunakan lightdm sehingga / usr / sbin / lightdm-session sumber .profile.

Saya pikir cara untuk pergi adalah (1) mengatur / mengekspor pengaturan lingkungan di ~ / .profile dan (2) memiliki .profile yang bersumber dari .bash_profile:

[[ -f ~/.profile ]] && . ~/.profile

(dan tidak memiliki .bashrc yang bersumber dari .profile atau .bash_profile).

Lihat juga:

Freddy Vulto
sumber
1
Ini menjelaskan cara mendapatkan .profilesumber Anda saat masuk, tetapi dia benar-benar bertanya-tanya tentang cara mendapatkan bashsumber saat ia meluncurkan terminal (bukan saat masuk)
cpast
Anda seharusnya tidak ingin memiliki .profile bersumber ketika Anda meluncurkan terminal baru (dari dalam KDE). Seluruh tujuan .profile adalah untuk membuatnya bersumber satu kali saat login, baik pada terminal grafis atau terminal teks; .profile seharusnya diambil saat Anda masuk ke KDE.
Freddy Vulto
. profil harus bersumber dari manajer desktop Anda. Yah ini tergantung pada pemahaman tujuan file. Dalam Debian, / etc / profile (dan ~ / .profile sebagai ekstensi) dimaksudkan untuk shell yang mirip bash .
Alois Mahdal
Anda tidak perlu sumber lagi JIKA bersumber saat login. bash Anda akan mewarisinya kecuali jika Anda melakukan sesuatu yang konyol seperti "export PATH = ~ / .bin" atau sesuatu yang menyebabkannya ditimpa.
RichieHH