/ etc / profile kaynaklanmıyor


45

11.04 için sistemimin yeni bir kurulumunu yaptım. Bölüm kurmaktı yükleme RVM bir yapışır ki, rvm.shiçinde /etc/profile.d/. Bu /etc/profile(her + r'yi yükleyen /etc/profile.d/*.sh) yüklenmediği için çalışmaz. Belgelere göre, profil sadece oturum açma bash çalıştırıldığında kaynaklanır. Bunu doğrulamak için daha bash --loginsonra rvmmüsait olduğunu öğrendim .

Bu benim için önceki Ubuntu sürümlerinde herhangi bir yapılandırma olmadan çalıştı. Yani, 10.10 'un yeni kurulumu doğru şekilde profil / .d kaynaklayacaktır.

Sorum şu: yanlış yaptığım bir şey var mı, yoksa Natty'de bunu bozan yeni varsayımlar var mı? Benim şu anki geçici çözüm etmektir source /etc/profileiçinde ~/.bashrc(profil yüke kastedilmektedir kadar korkunç olduğu öncesi bashrc en, ama hile yok).

Yanıtlar:


52

Varsayılan olarak, gnome-terminali bash'ı bir giriş kabuğu olarak başlatmaz (sanırım gnome-terminalinde bash'ın başladığını sanıyorum). Bu, bash'ın okumayacağı /etc/profileya da anlamına gelir ~/.profile. Doğru bir şekilde gözlemlediğiniz gibi, bir giriş kabuğu olarak başlatılırsa bash bu dosyaları okuyacaktır.

Sorununuzun hızlı bir şekilde düzeltilmesi, gnome-terminalinin bash'ı bir giriş kabuğu olarak başlatması ve böylece okunması için yapılandırılmasıdır /etc/profile. Bunu yapmak için Düzen menüsünden ulaşılabilen "Profil Tercihleri" GNOME terminalinde "Komutu bir giriş kabuğu olarak çalıştır" seçeneğini etkinleştirmeniz gerekir.

Bunu yapmayı önermiyorum, çünkü ~/.profileve arasındaki farkı bozuyor ~/.bashrc. İdeal olarak ~/.profile, oturum açma sırasında yalnızca bir kez ~/.bashrcyapılması gerekenler, bash her başlatıldığında gerekenler yapılmalıdır.

Superuser'da bashrc ve profile arasındaki farktan bahseden bir soru ve cevap var . Daha fazla bilgi için orada okuyun.

Sorun açıklamanıza göre, rvm betiğinin giriş sırasında yalnızca bir kez yüklenmesi gerekmiş gibi görünüyor. Gibi bildiğim kadarıyla Ubuntu okumak için grafik giriş yapılandırdı /etc/profile/ve ~/.profile. Bu, oturumu kapattıktan ve bir kez oturum açtıktan sonra, rvm betiğinin etkin olması gerektiği anlamına gelir. Hala işe yaramazsa, belki de her bash oturumu için rvm betiğinin yüklenmesi gerekir. Bu durumda bashrc, senaryo için daha uygun bir yer.


'Bir giriş kabuğu olarak çalıştır komutu' ayarı gerçekten yük /etc/profile(ve böylece .d's) yaptı. Açıklama için teşekkürler - bunun için rvm halkının takip edilmesi gerekiyor gibi görünüyor.
Marc

7
Ubuntu 11.04 giriş yaparken /etc/profileve okumuyor gibi gözükmüyor ~/.profile. Garip çünkü her zaman eski sürümlerle çalıştı. Bunun bir çözüm değil, geçici bir çözüm olduğunu düşünüyorum.
Luca

2
@lesmana GUI yerine CLI'den "Komutu bir giriş kabuğu olarak çalıştır" ı etkinleştirebilmemin bir yolu var mı? Uzak bir sunucuya bölündüm ve yerel olarak X iletemiyorum.
Waseem

5

Bununla birlikte, /etc/bash.bashrc gnome-terminali tarafından okunan ve "etkileşimli bash (1) mermileri için sistem çapında .bashrc dosyası" olan bir dosya vardır.

Rvm işlevine yaptığım çağrı [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm", oraya girdi ve bu sistemdeki birkaç kullanıcı için gayet iyi çalışıyor.


GNOME-terminal böyle bir şey yapmaz. gnome-terminali bash (veya oturum açma kabuğunuzun passwd veritabanında ne şekilde ayarlanmış olursa olsun) interaktif modda çalışır ve bash etkileşimli olarak okumaya başlar /etc/bash.bashrc. En azından Debian / Ubuntu'da. Bash normalde bir sistem genelinde bashrc okumaz; debian bunu yapmak için yamalı.
geirha

@geirha: dmitri @ Eos: ~ $ uname -a Linux Eos 3.0.0-16-jenerik # 29-Ubuntu SMP Salı 14 Şubat 12:48:51 UTC 2012 x86_64 x86_64 x86_64 GNU / Linux dmitri @ Eos: ~ $ cat / etc / bash.bashrc # Etkileşimli bash (1) kabukları için sistem çapında .bashrc dosyası. # Bu dosyadaki ayarları / komutları oturum açma kabukları için de etkinleştirmek için # Bu dosyanın / etc / profile yazılması gerekir. # Etkileşimli olarak çalışmazsa, hiçbir şey yapma [-z "$ PS1"] && dönüş .....
Dmitri

2
Evet, açıkçası, gnome-terminali bu dosyayı okumak için bash'i çağırıyor: kabuğunuz ksh ise, o zaman gnome-terminali bu dosyayı okumazdı, değil mi? "Sıralama" kelimesini ararken, "sıralamada hiçbir şey yapmaz" gibi kışkırtıcı ifadeler kullanmaya devam etmeden önce şunu önerebilir miyim?
Dmitri

4

RVM'yi çok kullanıcılı olarak kurmak, kullanıcının bu komutu çalıştırmasını gerektirir:

(çünkü Ubuntu, giriş sırasında /etc/profile.d kaynağını desteklemez)

echo '[[ -s "/etc/profile.d/rvm.sh" ]] && . "/etc/profile.d/rvm.sh" # Load RVM function' >> ~/.bashrc

3
Ubuntu, /etc/profile.d/oturum açma sırasında dosyaları açar, çünkü varsayılan dosyalar /etc/profiledöngü içindedir ve içinde kaynaklar vardır /etc/profile.d/. Bununla birlikte, eğer bu rvm.shfonksiyonlar veya takma adlar gibi etkileşimli mermiler için kod içeriyorsa, bunların kaynaklandırılması /etc/profileanlamsızdır. Etkileşimli bash oturumları için kurulum yapılmalıdır .bashrc.
geirha


0

Aslında kesinlikle gerekli olmadıkça kutularını tamamen yeniden başlatmak istemeyenleri buldum ...

Değişikliklerin gerçekleşmesi için makinenin tamamını yeniden başlatmanız gerekmez /etc/profile. İhtiyacınız olan tek şey, XWindows Masaüstü GUI'nizin yeniden başlatılmasını sağlamaktır, böylece yeniden yapılandırabilir (sistem genelinde yeniden başlatmanın bir parçası olarak başlatılmış gibi).

Benim için, LightDM kullanan xUbuntu kullanıyorum, ancak yürürlükteki masaüstünüzü ne çağırırsa çalıştırabilirsiniz.

Öncelikle, bunu yapmak için masaüstü GUI'sinin içinden bir terminal emülatörü kullanamazsınız (en azından LightDM ile değil) SSH veya ikincil bir konsol kullanmanız gerekir (Ctrl + Alt tuşunu basılı tutarsanız ve bir F tuşuna veya sayı tuşuna basarsanız) grafik masaüstü girişinizden veya ekranınızdan düz bir terminal penceresine düşmelisiniz). Ayrıca, SSH kullanıyorsanız VNC gibi uzak masaüstünü kapatmanızı da öneririm (açıkçası SSH bağlanabilir, sadece yeniden başlatmayı bekletirken, yeniden başlatmaya çalışırken yeniden başlatmaya çalışırken açık bir VNC penceresinin ekran 0'ı seçmesini istemezsiniz. VNC oturumunu sonlandırmanızı bekler).

Bunu her zaman SSH ile yapıyorum ve özellikle makineniz tarafından fiziksel olarak olmadığınızda ve tam bir yeniden başlatma için beklemek ve yeniden bağlamak gibi hissetmiyorsanız, büyük bir cankurtaran.

Şimdi "ikincil" bir terminalde veya SSH sayısında kolay olan kısım: (Evet, bu geçerli oturumunuzu sonlandıracak, sakıncası olmadığından, açık belgeleri veya işleri kaydetmediğinizden emin olun)

sudo service lightdm restart

masaüstünü öldürürken bir dakika bekleyin ve ardından yeniden başlatır (bu, işler durduğunda ve daha sonra yeniden başlatıldığında birkaç saniye sürebilir)

İşte bu, şimdi konsol 0'a geri döndüğünüzde ya da tekrar bağlanmak için VNC kullanmaya gittiğinde, giriş istemi tarafından karşılanacak ve normal olarak giriş yapacaksınız ve bir terminal emülatörü açarsanız ve komutunuzu vermeye devam ederseniz tam bir makine yeniden başlatmışsınız gibi her şey yeniden sağlandığından sorun yaşamayın.

Unutmayın, masaüstü ortamından bir terminal emülatörü kullanarak sudo service lightdm restart[veya stop, starther neyse] sorun çıkarırsanız , komut orada durur ve hiçbir şey olmuyor gibi görünür. Bunun nedeni şu anda bu konsolu (aka display) 0 kullanıyor olmanızdır ve böylece komutun çalıştırılmasından önce masaüstünün kullanılmamasını beklediği için tamamen aşağı inemez ve geri gelemez.

Son Not: Ortamda bir terminal emülatöründe masaüstünün içinden yeniden başlatma yapmayı denemedim ve daha sonra yeniden başlatabilecek başka bir konsola geçmeye çalıştım, fakat zaten konsolu değiştirecekseniz neden sadece komutu çalıştırmıyorsanız Oradan zaten olması gerektiği gibi?


-4

echo ". .profile" >> ~ / .bashrc

Ve sonra başka bir pencere açın. Bence bu kolay bir yaklaşım.


1
Varsayılan .profilekaynaklar bu yana .bashrc, bu çoğu kullanıcı için bir döngü oluşturur.
muru
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.