Bash Linux'taki yeni oturumda '.profile' dosyasını yüklemiyor


22

BT departmanımdan aldığım yeni bir Linux makinesi kuruyorum ve .profileyeni bir terminal oturumu başlattığımda fark edilmedi. Geçerli kabuk Bash , ancak birlikte gelen varsayılan sh'den değiştirdim . .profileBaşlangıçta nasıl yüklenmesini sağlayabilirim ?

Ben aracılığıyla kabuk erişmek SSH : ssh myusername@remotemachine. Üzerinde yönetici ayrıcalıklarım var.


Kabuğunuzu başlatmak için kullandığınız komutu bize gösterin.
Nifle

Yanıtlar:


24

Bash etkileşimli bir giriş kabuğu olarak başladığında , işleyebileceği dosyalardan biri olur ~/.profile.

Etkileşimli, giriş yapmayan bir kabuk olarak başladığında, bunu yapmaz. İşlem yapar /etc/bash.bashrc(bu dosya veya benzeri bir dosya Bash sürümünüzde etkinleştirilmişse) ve ~/.bashrc.

Aşağıdakilerinizi aşağıdakilere ekleyebilirsiniz ~/.bashrc(ancak döngülere veya değerlerin yanlışlıkla değiştirilmesine dikkat edin):

. $HOME/.profile

8
Eğer .bashrc kaynağınız .profile'ınız olacaksa (ki ben tavsiye etmiyorum), çift kaynaklara karşı biraz korumaya sahip olmalısınız. Bazı koruma değişkenleri ayarlayın [ -z "$SOME_VAR_SET_IN_PROFILE" ] && . ~/.profile
Rich Homolka

2
Evet, ben de tavsiye etmiyorum.
sonraki duyuruya kadar duraklatıldı.

12
Bir oturum açma kabuğu ~ / .bash_profile, ~ / .bash_login ve ~ / .profile komutlarını sırayla dener ve yalnızca bulduğu ilk dosyayı açar.
Beano

3
Diğerleri söylediler, bu tavsiye DEĞİL, çünkü olağan yolu profil ve "arkadaşlar" (.bash_profile) kaynak .bashrc için değil, başka bir yol. Terminal programınız bir giriş kabuğu DEĞİL, ancak etkileşimli bir giriş olmayan kabuk olabilir. Genellikle ayarlayabileceğiniz bir tercih vardır. Çalıştırmak için .profile, .login ve / veya .bash_profile olsun.
rholmes

15

Kabuğunuzu nasıl başlattığınıza bağlı. Diğerlerinin söylediği gibi, bir giriş kabuğu profilinizi yükler (önce .bash_profile öğesini arar, sonra .profile öğesini dener). Bunlardan birini bulursa, onları yükler. Giriş yapmayan bir kabuk (etkileşimli veya etkileşimli olmayan) .bashrc kaynağını oluşturur.

Her şeyi .bashrc'ye koymanızı öneririm. .Profile / .bashrc ayrımı biraz gelişigüzeldi ve UNIX'in eski günlerinde tty sadece bir aygıt adı olmadığında ve gerçek bir TeleType anlamına geldiğinde daha anlamlıydı. Bir sunucuya 'ana' girişte belirli şeyleri (postaları kontrol etmek gibi) başlatmak ve diğer kabuklar için normal kurulum öğelerini başlatmaktı. Çoğu Linux'ta şimdi giriş yapacaksınız, bazı grafik arayüzlere (KDE, gnome, CDE 'shudder') giriş yaptığınız için gerçekten bir kabukta oturum açmıyorsunuz. "Spawn giriş işlemleri" artık oturum yöneticiniz tarafından halledilir. Şimdi çok daha az alakalı.

Benim önerim: .profile'ınızı sadece:

[ -f $HOME/.bashrc ] && . $HOME/.bashrc

.bashrc'nin ilk satırı olarak, bir bash betiğini çalıştırırken erken atlayarak garip şeylere karşı koruyun:

[[ $- != *i* ]] && return

5
.profilebash agnostik tutulmalıdır. .bash_profileYüklemek .profileve sonra yüklemek için yapılandırmayı öneririm .bashrc. Sadece bash agnostik bir şeyler koymak .profilegibi PATHve LC_*malzeme. Gerisini koy .bashrc.
lesmana

@Rich Homolka [-f $ HOME / .bashrc] komutunuzda neden iki kez yer alıyor? Gönderdiğiniz komut sadece 'dan nasıl farklıdır. $ HOME / .bashrc '?
David Doria

1
Protip: .bashrc'nize stdout veya stderr'a yazan hiçbir şey koymayın; SCP gibi şeyler için etkileşimli olmayan istemcileri kırabilir. Çıktısı olan şeyler (örneğin, bir fal kurabiyesi ve çalışma süresi ile karşılaşmayı seviyorum) sadece .profile / .bash_profile
Brian A. Henning

@Lotharyx doğru. Stdout'a ihraç edilen, Xserver'i (sinek kuşu aştı) çıkaran bir standart-ish kshrc vardı
Rich Homolka
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.