Linux’ta which Komutu [Örneklerle]
Hangi Komut nedir?
Which komutu, PATH ortam değişkeninde belirtilen dizinlerdeki çalıştırılabilir dosyaların konumunu arar. Terminalde bir komut yazdığınızda, Linux OS çalıştırılabilir dosyayı bulmak için PATH’de listelenen dizinlerde arama yapar. Which komutu size bu dizinlerde bulduğu komutun ilk örneğini gösterir.
Temel Sözdizimi
which [options] [command_name]
- [seçenekler]: Which komutunun davranışını değiştirmek için isteğe bağlı bayraklar.
- [command_name]: Bulmak istediğiniz komutun veya yürütülebilir dosyanın adı.
Neden which Komutu Kullanılmalı?
- Yürütülebilir Yolları Doğrulayın: Bir yürütülebilir dosyanın hangi sürümünün kullanıldığını belirlemeye yardımcı olur.
- Bir Komutun Yüklü Olup Olmadığını Kontrol Et: Belirli bir programın yüklü olup olmadığını ve PATH’inizde mevcut olup olmadığını doğrulamak için kullanışlıdır.
- KomutDosyalarındaHata Ayıklama: Kodlarda hata ayıklama yaparken, kodunuzun bir programın doğru sürümünü kullandığından emin olmanıza yardımcı olabilir.
Örnek 1: Bir Komutun Yolunu Bulma
En yaygın kullanımı, bir komutun veya çalıştırılabilir dosyanın yolunu bulmaktır. Örneğin, python3 çalıştırılabilir dosyasının nerede olduğunu öğrenmek istiyorsanız, çalıştırın:
which python3
Çıktı:
/usr/bin/python3
Bu çıktı python3 çalıştırılabilir dosyasının /usr/bin dizininde bulunduğunu gösterir.
Örnek 2: Birden Fazla Komutu Kontrol Etme
Her birinin yolunu görmek için which komutunu aynı anda birden fazla komutla birlikte kullanabilirsiniz:
which python3 gcc git
Çıktı:
/usr/bin/python3
/usr/bin/gcc
/usr/bin/git
Bu komut python3, gcc ve git’in konumlarını tek seferde kontrol eder ve her komut için yolu gösterir.
Örnek 3: Hangisini Takma Adlarla Kullanma
Bir komut için ayarlanmış bir takma adınız varsa, bu bazen takma adın tanımlanmasına da yardımcı olabilir. Örneğin, çıktıya renk ekleyen bir ls takma adınız varsa:
alias ls='ls --color=auto'
which ls
Çıktı:
alias ls='ls --color=auto'
/bin/ls
Bu durumda, ls’nin /bin/ls komutuna işaret eden bir takma ad olduğunu gösterir. Bu, özel takma adların nasıl çözümlendiğini anlamak için yararlı olabilir.
Örnek 4: Bir Komutun Tüm Örneklerini Bulma (-a Seçeneği)
A seçeneği, bir komutun sadece ilkini değil, PATH’inizde bulunan tüm örneklerini görmenizi sağlar:
which -a python3
Çıktı:
/usr/bin/python3
/usr/local/bin/python3
Bu örnek, PATH’de belirtilen dizinlerdeki tüm python3 oluşumlarını gösterir. Birden fazla sürüm yüklüyse ve bunların konumlarını bilmek istiyorsanız bu yararlı olabilir.
Pratik Kullanım Örnekleri
Bir Komutun Yüklü Olup Olmadığını Kontrol Etme
Which komutu, belirli bir programın yüklü olup olmadığını ve PATH’de mevcut olup olmadığını hızlı bir şekilde doğrulayabilir. Örneğin, curl’ün yüklü olup olmadığını kontrol etmek için:
which curl
Çıktı:
/usr/bin/curl
Çıktı bir yol gösteriyorsa, curl yüklü ve erişilebilir durumdadır. Hiçbir şey döndürmezse, komutun PATH’inizde bulunmadığı ve yüklenmesi gerekebileceği anlamına gelir.
PATH Sorunlarında Hata Ayıklama
Komutların bulunamamasıyla ilgili sorunlarla karşılaşırsanız veya bir komutun beklenenden farklı bir sürümü çalışıyorsa, yürütülebilir dosyanın nerede olduğunu belirlemeye yardımcı olabilir. Örneğin, belirli bir node sürümünü kullanmayı bekliyorsanız ancak yanlış sürüm çalışıyorsa:
which node
Çıktı:
/usr/local/bin/node
Yolu doğrulayarak, amaçladığınızdan farklı bir kurulumun kullanılıp kullanılmadığını belirleyebilirsiniz.
Sınırlamaları
Bu yararlı bir araç olsa da bazı sınırlamaları vardır:
- Tüm Yolları Aramaz: Which komutu yalnızca PATH ortam değişkeninde listelenen dizinleri arar. Eğer bir program PATH’e dahil olmayan bir dizine yüklenmişse, which onu bulamaz.
- Tüm Kabukları Kontrol Etmez: which kabuğunuza bağlı olarak farklı davranabilir (örneğin, bash, zsh). Bir kabuğa özgü takma adlar ve işlevler başka bir kabuk tarafından tanınmayabilir.
- Takma Adlar ve İşlevler için Sınırlı Çıktı: Diğer adları gösterebilse de, diğer adlar ve işlevler hakkında daha fazla ayrıntı sağlayabilen type veya command -v gibi diğer komutlar kadar kapsamlı değildir.
Hangi alternatifler
type: Provides more detailed information about a command, including whether it is an alias, function, or built-in command.
type python3
command -v: Similar to which, it is often preferred in scripts for better portability.
command -v python3
Bu alternatifler bazen hangisine kıyasla daha doğru olabilir veya ek ayrıntılar sağlayabilir.
Sonuç
Which komutu, çalıştırılabilir dosyaları bulması, komut yollarını doğrulaması ve PATH ile ilgili sorunları ayıklaması gereken Linux kullanıcıları için değerli bir araçtır. Kullanımı kolaydır ve yüklü programların doğru sürümlerini kullandığınızdan emin olmanızı sağlayarak ortamları ayarlarken zaman kazandırabilir. Sınırlamaları olsa da, Linux sisteminizde komutların nerede çalıştırıldığını hızlı bir şekilde bulmak için kullanışlı bir komut olmaya devam ediyor.
Hangisini etkili bir şekilde kullanacağınızı anlamak, Linux ortamınızı yönetmede ve yaygın komut satırı sorunlarını gidermede daha yetkin olmanıza yardımcı olacaktır. Mutlu kodlamalar!