root kullanıcıları için kaynak bash profili


17

Bu soru, takdir ettiğim gibi herkesin canını sıkacaksa, özür dilerim, daha önce birçok kez çeşitli şekillerde sorulmuştur. Lütfen arşivleri okudum ve en azından bazı önerileri denedim, ancak yine de (basit) sorunu çözemiyorum. Umarım birisi cevap verebilir ve kendimi uygun şekilde alçalmış gibi hissediyorum. Bilginize, herhangi bir belirsizlikten kaçınmak için, göreceli yollar yerine mutlak yolları kullanacağım.

Giriş yaptığımda kullanıcı olarak yapıyorum adam. İçindeki takma adlar /Users/adam/.bash_profileyüklenir ve bir terminal çekildikten hemen sonra bunları kullanabilirim. Bir .bashrcdosya kullanmıyorum ve sorun değil.

Arada sırada su, terminale yazıp şifremi girerek root'a geçiyorum. İstem değişir ve ben artık kök kullanıcıyım. Benim sorum şu: root olduktan hemen sonra, profil dosyasını manuel olarak kaynaklamak zorunda kalmadan kök bash profilim yüklenebilir mi? Otomatik olarak gerçekleşmediğini bilmemin nedeni, kök profil dosyamda ve benim aynı takma adlara sahip olmam /Users/adam/.bash_profile. Kök kullanıcı olduktan sonra, yazmadıkça source [root_profile_file], çalışmazlar. Aşağıdaki permütasyonları ayarlamayı denedim ve sonra terminal aracılığıyla root'a geçmeyi denedim, ancak hiçbiri otomatik olarak profili / takma adları kaynakladı (not, aşağıdaki seçeneklerden herhangi birine eşzamanlı olarak ayarlanmadığından bu yüzden ben ' m kafa karıştırıcı):

Seçenek 1: Takma adlarımı koy/etc/profile

Seçenek 2:

  • içinde /etc/profile, insert[ -r /etc/bashrc ] && . /etc/bashrc
  • takma adlarımı koy /etc/bashrc

Seçenek 3:

  • içinde /etc/bash_profile, insert[ -r /etc/bashrc ] && . /etc/bashrc
  • takma adlarımı koy /etc/bashrc

Seçenek 4: Takma adlarımı koy/var/root/.profile

Seçenek 5:

  • içinde /var/root/.profile, insert[ -r /var/root/.bashrc ] && . /var/root/.bashrc
  • takma adlarımı koy /var/root/.bashrc

Seçenek 6:

  • içinde /var/root/.bash_profile, insert[ -r /var/root/.bashrc ] && . /var/root/.bashrc
  • takma adlarımı koy /var/root/.bashrc

Yukarıdakilerden herhangi biriyle source root_profile_file, root'a geçip takma adların yüklendiğini ancak yalnızca dosyayı manuel olarak kaynakladığımda yazdığımı lütfen unutmayın . Belki de bash'ın nasıl çalıştığını tamamen yanlış anladım ve root'a geçtikten sonra bir profil dosyasını otomatik olarak kaynaklamak mümkün değil, ancak basit bir çözüm olduğunu umuyorum. Bu mesajı okumak için zaman ayıran herkese şimdiden teşekkürler.

Yanıtlar:


14

Karşılaştığınız sorun su, kendi başına çalıştırdığınızda , bir 'giriş' kabuğu girmemenizdir. Bu, ortamınızın, çalışma dizininizin ve uid / gid dışındaki her şeyin orijinal kullanıcı ile aynı kaldığı anlamına gelir.

Giriş tetikleyicileri yürütülmez ve açıkladığınız sorunlarla karşılaşırsınız.

Basit bir soruna basit bir çözüm:

su -

Gönderen su(1)adam sayfası:

Su komutu bir giriş oturumu sırasında başka bir kullanıcı olmaya kullanılır. Kullanıcı adı olmadan çağrıldığında, su varsayılan olarak süper kullanıcı haline gelir. İsteğe bağlı argüman - kullanıcının doğrudan giriş yapmasını beklediği gibi bir ortam sağlamak için kullanılabilir.

Ayrıca:

   -, -l, --login
       Provide an environment similar to what the user would expect had the user logged in directly.

suBir giriş kabuğuna girerseniz , bash beklediğiniz gibi davranacak ve aşırı girişli geçici çözümlere gerek kalmadan otomatik olarak "login" üzerinde uygun dosyaları kaynaklayacaktır.


1
Bununla birlikte, Hai Vu'nun notlarını ikinci olarak vereceğim: Gerçekten, gerçekten, gerçekten asla suçalışmamalısınız root. Orada sudobu amaçla veya size hiç root yetkileri gerektirmeyen şekilde çalışabilir.
12'de Jason Salaz

Hem sana hem de @Hai Vu'ya teşekkürler. "su -" hile yapar ve evet, tamamen anlaşılır, kök genellikle kaçınılmalıdır.
Adam Gold

1
Su komutundan sonra '-' eklemeyi zaten biliyordum, ancak yine de kaynak kullanıcı için benim .bash_profile'ımı almıyordum. Florian Bidabe ve patrix'in kök kabuğunu sh'den bash'a değiştirmeyle ilgili aşağıdaki cevabı benim için sorunu düzeltti.
JaredC

9

Aslında kök kullanımları /bin/sh(eski bourne kabuğu) .bash_profileve .bashrcbash tarafından okunur.

Bu dosyalar içinde bulunmayan işlevleri kullanabileceği için zorlaşır sh. Siz source .bashrcya da source .bash_profile, örneğin, karmaşık işlevlerle ilgili bir sorun yaşamaya devam edersiniz.

Bunu çözmenin bir yolu koşmaktır

sudo dscl . -change /Users/root UserShell /bin/sh /bin/bash

anahtara root's kabuk bash.


Kök dosya /bin/shkullanır /var/root/.profile. @
Matic'in

6

Kesinlikle ihtiyacım olduğunda, sudo bashbu beni kökten yapan ama JRobert'in çevresiyle. Benim .bashrc içeriği:

# Prompt: 'jrobert@JRiMac ~' in green (red, if I'm root), '$' in white
if [[ $UID == 0 ]]; then
   export PS1="\[\e[1;31;40m\]\u@\h \W\[\e[0m\]\$ "
else
   export PS1="\[\e[32;40m\]\u@\h \W\[\e[0m\]\$ "
fi

, şimdi bana (daha) kendim için savunmasız olduğumu vurgulamak için kök komut isteminin KIRMIZI renkte parlamasını sağlamak [birini seç: küstahlık, aptallık, şişman parmak eğilimleri, iyi tavsiye almaya isteksizlik, s.creek - raketi düşürmeyin].


3

sudo -iKök kullanıcıya geçmek için kullanıyorum . Bu durumda, kabuk yapılandırması okunur /var/root/.profile.


1

Genel suolarak, tehlikeli olduğu için tavsiye ederim , sadece arayın ve nedenini biliyorsunuz. Sorunuzda, kök hesap, hesabınızla aynı şekilde çalışır: kaynak ~ / .bash_profile ve / veya ~ / .bashrc. Hangisini bilmiyorum, ama sezgim ~ / .bashrc'ye doğru eğildi , bu yüzden takma adlarınızı oraya koymayı deneyebilirsiniz. İşte bir öneri:

su           # type password to get into root account
vi ~/.bashrc # put your aliases there
exit         # exit your root session
su           # try again to see if your aliases works

0

sudo dscl . -change /Users/root UserShell /bin/sh /bin/bash Sadece bu işe yarar! export PS1=...Yukarıdaki tüm dosyaları benim koymak için çalıştı . / etc / profile, / etc / bashrc /var/root/.bashrc /var/root/.profile /var/root/.bash_profile.

Tüm bu dosyalardan /bin/shkabuk, bilgi okumuyor! (yalnızca bash) (Mac OS El Capitan). Ve kabuğunu bash'a değiştirmek zorunda kaldım.

Ayrıca "su -"çalışır. (bu kabuk ile /var/root/.profiledosya okuyor )


1
Mevcut cevapları tekrar
doğrulamaya

-1

Bunu çözmenin bir yolu, kök kabuğunu bash'a geçirmek için aşağıdakileri çalıştırmaktır:

sudo dscl . -change /Users/root UserShell /bin/sh /bin/bash

Bu çözüm de sorunumu çözdü.


-2

yalnızca bir 'varsayılan' kullanıcı ve kök kullanıcı varsa alias su="su -", 'varsayılan' kullanıcının .bash_profile dosyasını ekleyebilir ve istediğiniz efekti elde edebilirsiniz. Çalışır ve hacky şeyler olmadan.

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.