- Konu sahibi
- #1
Terminal ile çalışırken en çok karıştırılan noktalardan biri, "ben ayarı yaptım ama neden yeni pencerede görünmüyor?" sorusudur. Bunun cevabı çoğu zaman profil dosyasının doğru kabukta, doğru oturum türünde ve doğru dosyada olmasıdır. macOS tarafında Terminal uygulaması varsayılan olarak zsh kullanır; yeni pencere ve sekmelerin hangi kabukla açılacağı ayrıca ayarlanabilir. Bu yüzden bash, zsh, sh gibi farklı kabuklar arasında geçiş yapan biri için profil dosyasının etkisi beklenenden farklı görünebilir.
Aynı bilgisayarda iki kişinin aynı komutu farklı sonuçla görmesinin nedeni bazen kabuğun kendisidir. Oturum açma kabuğu, etkileşimli kabuk ve script çalıştıran kabuk aynı şey değildir. Linux tarafında login shell, oturum açarken /etc/profile gibi dosyaları okuyabilir; bu davranış kabuğun login olarak başlatılıp başlatılmadığına bağlıdır. Scriptlerde ise çoğu zaman doğrudan shebang satırı hangi yorumlayıcının kullanılacağını belirler. Bu yüzden "profil çalışmadı" demeden önce hangi kabuğun gerçekten aktif olduğunu doğrulamak gerekir.
Kullanıcıların sık yaptığı hata, bir kabuğun profil dosyasına yazılan satırı başka bir kabuktan beklemektir. Örneğin zsh kullanıyorsanız, bash için yazılmış bir ayar yeni Terminal penceresinde etkisiz kalabilir. Apple’ın Terminal dokümantasyonu, Terminal uygulamasında varsayılan kabuğun zsh olduğunu ve "Shells open with" ayarıyla bunun değiştirilebildiğini açıkça belirtir. Yani önce Terminal’in hangi kabukla açıldığını doğrulamak, sonra ilgili kabuğun profil dosyasını düzenlemek gerekir.
Birçok kişi sorununu kabuktan sanır, ama aslında fark komutta olabilir. GNU Core Utilities; dosya, kabuk ve metin işleme için temel araçları sağlar. Fakat macOS ile Linux arasında aynı isimli komutların seçenekleri, varsayılan davranışları veya çıktı biçimleri farklı olabilir. Bu yüzden profil dosyası sorunu çözerken aynı anda kullandığın araçların GNU sürümü mü, BSD türevi mi olduğunu da düşünmek gerekir. Özellikle betik yazarken bu fark, "profil çalıştı ama komut yine aynı davranmıyor" noktasına götürebilir.
Eğer macOS’ta Terminal açınca bir değişken görünmüyorsa, önce "hangi kabuk?" sorusunu sor. Sonra "bu kabuk giriş kabuğu mu, etkileşimli kabuk mu?" diye devam et. Ardından ayarın hangi dosyada tanımlandığını kontrol et. Linux’ta da benzer mantık geçerlidir; login shell davranışı ve shell başlangıç dosyaları dağıtıma göre biraz farklı görünse de temel mantık aynıdır: ayar doğru dosyada değilse çalışmaz, doğru dosyada olsa bile yanlış oturum türünde okunmayabilir.
Önce hangi kabuğu kullandığını kontrol et
Aynı bilgisayarda iki kişinin aynı komutu farklı sonuçla görmesinin nedeni bazen kabuğun kendisidir. Oturum açma kabuğu, etkileşimli kabuk ve script çalıştıran kabuk aynı şey değildir. Linux tarafında login shell, oturum açarken /etc/profile gibi dosyaları okuyabilir; bu davranış kabuğun login olarak başlatılıp başlatılmadığına bağlıdır. Scriptlerde ise çoğu zaman doğrudan shebang satırı hangi yorumlayıcının kullanılacağını belirler. Bu yüzden "profil çalışmadı" demeden önce hangi kabuğun gerçekten aktif olduğunu doğrulamak gerekir.
macOS’ta ayar nereye yazılmalı?
Kullanıcıların sık yaptığı hata, bir kabuğun profil dosyasına yazılan satırı başka bir kabuktan beklemektir. Örneğin zsh kullanıyorsanız, bash için yazılmış bir ayar yeni Terminal penceresinde etkisiz kalabilir. Apple’ın Terminal dokümantasyonu, Terminal uygulamasında varsayılan kabuğun zsh olduğunu ve "Shells open with" ayarıyla bunun değiştirilebildiğini açıkça belirtir. Yani önce Terminal’in hangi kabukla açıldığını doğrulamak, sonra ilgili kabuğun profil dosyasını düzenlemek gerekir.
En pratik kontrol listesi
| Konu | Kısa not |
|---|---|
| macOS Terminal’da kabuk davranışı | Varsayılan kabuk zsh'dir; Terminal pencerelerinin hangi kabukla açılacağını ayarlayabilirsiniz. |
| Linux oturum açma kabuğu | Login shell, oturum açarken /etc/profile ve .profile gibi dosyaları okuyabilir; bu yüzden profil dosyaları ile etkileşim macOS'tan farklı algılanabilir. |
| GNU araçları beklentisi | GNU coreutils, temel dosya ve metin işleme araçları sağlar; macOS ve bazı Linux dağıtımlarında komut seçenekleri ve çıktı biçimi aynı olmayabilir. |
- Yeni pencerede hangi kabuğun açıldığını kontrol et.
- Profil dosyasını kabuğa göre seç: zsh, bash veya başka bir shell.
- Değişkenleri ekledikten sonra yeni oturum aç; mevcut oturumda aynı sonucu bekleme.
- Script çalıştırıyorsan login shell ile etkileşimli shell farkını unutma.
- macOS ile Linux arasında taşınan ayarlarda GNU araçlarına güvenip her zaman aynı seçenek davranışını bekleme.
Neden GNU araçları burada önemli?
Birçok kişi sorununu kabuktan sanır, ama aslında fark komutta olabilir. GNU Core Utilities; dosya, kabuk ve metin işleme için temel araçları sağlar. Fakat macOS ile Linux arasında aynı isimli komutların seçenekleri, varsayılan davranışları veya çıktı biçimleri farklı olabilir. Bu yüzden profil dosyası sorunu çözerken aynı anda kullandığın araçların GNU sürümü mü, BSD türevi mi olduğunu da düşünmek gerekir. Özellikle betik yazarken bu fark, "profil çalıştı ama komut yine aynı davranmıyor" noktasına götürebilir.
Kısa örnek düşünme biçimi
Eğer macOS’ta Terminal açınca bir değişken görünmüyorsa, önce "hangi kabuk?" sorusunu sor. Sonra "bu kabuk giriş kabuğu mu, etkileşimli kabuk mu?" diye devam et. Ardından ayarın hangi dosyada tanımlandığını kontrol et. Linux’ta da benzer mantık geçerlidir; login shell davranışı ve shell başlangıç dosyaları dağıtıma göre biraz farklı görünse de temel mantık aynıdır: ayar doğru dosyada değilse çalışmaz, doğru dosyada olsa bile yanlış oturum türünde okunmayabilir.