- Konu sahibi
- #1
macOS’ta Terminal açınca beklediğiniz ortam değişkenleri, alias’lar veya PATH ayarları görünmüyorsa sorun çoğu zaman komutun kendisinde değil, kabuğun nasıl başlatıldığındadır. En sık karışan nokta şudur: login kabuğu ile etkileşimli kabuk aynı şey değildir. Terminal penceresi bir kabuk süreci başlatır; ama hangi başlangıç dosyasının okunacağı, oturumun login olup olmamasına ve kullanılan kabuğa göre değişir. Bu yüzden bir ayar bazen tek pencerede çalışır, bazen hiç çalışmaz, bazen de SSH ile bağlanınca farklı davranır.
Login kabuğu, kabuğun oturum açılışı mantığıyla çalıştığı durumdur. Bash belgelerinde login kabuğu açıldığında belirli başlangıç dosyalarının sırayla okunduğu anlatılır; ilk uygun dosya bulunduğunda süreç devam eder. Bu yüzden yalnızca ~/.bashrc’ye yazılan bir ayar, login kabuklarda beklediğiniz anda yüklenmeyebilir; yalnızca ~/.profile’e yazılan bir ayar da etkileşimli olmayan başka senaryolarda görünmeyebilir. macOS belgeleri de kalıcı değişkenler ve takma adlar için uygun login script’lerinden söz eder.
Genel ve güvenli yaklaşım, giriş ortamını hazırlayan satırları login dosyasına, sadece etkileşimli kabukta lazım olan satırları ise etkileşimli başlangıç dosyasına koymaktır. Örneğin PATH, ortam değişkeni ve oturum genelinde geçerli olması gereken alias’lar için login dosyası daha uygundur. Sadece terminal içinde kullanılan renkli prompt, kısa alias kümeleri veya komut tamamlama ayarları gibi şeyler etkileşimli kabuğa bırakılabilir. Apple’ın eski ama hâlâ açıklayıcı dokümantasyonu, bu kalıcı ayarların login script’lerle ilişkilendirilmesini önerir.
Çünkü macOS’ta Terminal uygulaması, kabuğu bir pencere içinde çalıştırır; ama pencerenin açılış şekli, oturumun login sayılıp sayılmamasını etkileyebilir. Aynı zamanda farklı shell’ler farklı başlangıç dosyaları kullanır. Bash için ~/.bash_profile, ~/.bash_login ve ~/.profile arasında öncelik sırası vardır; zsh, sh veya başka bir kabukta isimler ve okuma davranışı değişebilir. Bu nedenle “dosyaya ekledim ama çalışmıyor” şikâyetinin ilk kontrolü, önce hangi shell’in çalıştığı, sonra da o shell’in hangi dosyayı okuduğu olmalıdır.
Login kabuğu neyi değiştirir?
Login kabuğu, kabuğun oturum açılışı mantığıyla çalıştığı durumdur. Bash belgelerinde login kabuğu açıldığında belirli başlangıç dosyalarının sırayla okunduğu anlatılır; ilk uygun dosya bulunduğunda süreç devam eder. Bu yüzden yalnızca ~/.bashrc’ye yazılan bir ayar, login kabuklarda beklediğiniz anda yüklenmeyebilir; yalnızca ~/.profile’e yazılan bir ayar da etkileşimli olmayan başka senaryolarda görünmeyebilir. macOS belgeleri de kalıcı değişkenler ve takma adlar için uygun login script’lerinden söz eder.
Pratikte hangi dosyaya ne yazılır?
Genel ve güvenli yaklaşım, giriş ortamını hazırlayan satırları login dosyasına, sadece etkileşimli kabukta lazım olan satırları ise etkileşimli başlangıç dosyasına koymaktır. Örneğin PATH, ortam değişkeni ve oturum genelinde geçerli olması gereken alias’lar için login dosyası daha uygundur. Sadece terminal içinde kullanılan renkli prompt, kısa alias kümeleri veya komut tamamlama ayarları gibi şeyler etkileşimli kabuğa bırakılabilir. Apple’ın eski ama hâlâ açıklayıcı dokümantasyonu, bu kalıcı ayarların login script’lerle ilişkilendirilmesini önerir.
macOS’ta neden karışıklık sık görülür?
Çünkü macOS’ta Terminal uygulaması, kabuğu bir pencere içinde çalıştırır; ama pencerenin açılış şekli, oturumun login sayılıp sayılmamasını etkileyebilir. Aynı zamanda farklı shell’ler farklı başlangıç dosyaları kullanır. Bash için ~/.bash_profile, ~/.bash_login ve ~/.profile arasında öncelik sırası vardır; zsh, sh veya başka bir kabukta isimler ve okuma davranışı değişebilir. Bu nedenle “dosyaya ekledim ama çalışmıyor” şikâyetinin ilk kontrolü, önce hangi shell’in çalıştığı, sonra da o shell’in hangi dosyayı okuduğu olmalıdır.
Sık yapılan hata örnekleri
- Aynı ayarı hem login dosyasına hem etkileşimli dosyaya rastgele kopyalamak ve çakışma yaratmak.
- PATH’i sadece ~/.bashrc’ye yazıp login shell’de görünmesini beklemek.
- Alias tanımlarını, non-interactive betiklerde de çalışacakmış gibi varsaymak.
- Hangi kabuğun aktif olduğunu kontrol etmeden tek çözüm dosyası aramak.
Hızlı kontrol listesi
- Aktif kabuğu kontrol edin.
- Oturumun login olup olmadığını doğrulayın.
- Ayarın sistem genelinde mi, yalnızca terminal oturumunda mı gerekli olduğuna karar verin.
- Değişkenler için login dosyası, etkileşimli davranışlar için etkileşimli dosya kullanın.
- Aynı ayarın birden fazla dosyada çakışıp çakışmadığını kontrol edin.