Giriş olsun veya olmasın, her zaman etkileşimli modda kaynaklanacak bir Bash dosyası var mı?


10

Bildiğim kadarıyla, etkileşimli kabuklar giriş olabilir veya giriş olmayabilir ve onlar için başlangıç ​​dosyaları farklıdır.

  • Eğer etkileşimli + giriş kabuğu → /etc/profileardından ilk okunabilir ~/.bash_profile, ~/.bash_loginve~/.profile
  • Eğer → interaktif + olmayan giriş kabuğu /etc/bash.bashrcsonra~/.bashrc

Bir giriş kabuğu olup olmadığına bakılmaksızın etkileşimli bir kabuk kullandığımda bazı değişkenler ayarlamak istiyorum.



1
@strugee Hayır, bu soru ortam değişkenleriyle ilgili değil.
Gilles 'SO- kötü olmayı bırak'

@Gilles evet, ama cevabınız eşit derecede iyi.
Mart'ta Strugee

1
@strugee Bunun nedeni şu anki sorunun ötesine geçtim ve çevresel bir konuya değindim. Bir yanıttaki bir paragraf yinelenmez. Sorular sadece birebir aynı cevaplara sahipse yinelenir, bir cevap ikinci cevabı cevaplamak için yeterli materyal içeriyorsa değil.
Gilles 'SO- kötü olmayı kes'

Yanıtlar:


10

Hayır, yok. Evet, bu bir tasarım hatası.

Aşağıdaki içeriği şurada kullanın ~/.bash_profile:

if [ -e ~/.profile ]; then . ~/.profile; fi
if [[ -e ~/.bashrc && $- = *i* ]]; then . ~/.bashrc; fi

Bash'ın daha da garip bir tuhaflığı olduğuna dikkat edin: etkileşimli olmayan bir giriş kabuğu olduğunda ve üst işlem rshdveya sshdbash kaynakları ~/.bashrc(ancak değil ~/.bash_profileveya ~/.profile) olduğunda. Bu yüzden bunu aşağıdakilerin üstüne koymak isteyebilirsiniz .bashrc:

if [[ $- != *i* ]]; then return; fi

Ayrıca bkz. .Bashrc ve .bash_profile arasındaki fark ve Giriş Kabuğu ile Giriş Yapmayan Kabuk arasındaki fark?


Bu tuhaflıklar güvenlik nedeniyle (güvenliğe duyarlı bir ortamda çalışırken beklenmedik dosyalar yüklemeyin).
vonbrand

2
@vonbrand Er, ne? Hayır, bu tuhaflıkların güvenlikle hiçbir ilgisi yok. İlgili “beklenmeyen dosyalar” yoktur ( .bashrcetkileşimli olmayan bir ortamda yükleme işlemi aslında beklenmedik olarak sayılabilir) veya güvenliğe duyarlı herhangi bir bağlamın kontrolü yoktur.
Gilles 'SO- kötü olmayı bırak'

Bu döngüleri önlemek için bir yöntem var mı?
Braiam

1
@Braiam Hangi döngüler?
Gilles 'SO- kötü olmayı bırak
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.