it-swarm-tr.com

Bir programı her yerden nasıl çalıştırılabilir hale getirebilirim

Geçerli dizinime bakılmaksızın belirli bir programı çalıştırabilmek istiyorsam ne yapmam gerekir? /bin Klasöründeki programa sembolik bir bağlantı oluşturmalı mıyım?

79
aneuryzm

Sadece export PATH=$PATH:</path/to/file> komut satırında yalnızca oturumun süresi boyunca devam eder.

Kalıcı olarak değiştirmek isterseniz export PATH=$PATH:</path/to/file> ~ ~ .bashrc dosyanıza (en sonunda iyi).

55
oadams

Kısa cevap, programı çalıştırmak için, dizininiz ne olursa olsun, arama dizininde programın dizinine sahip olmanız gerektiğidir. Sorun, programı zaten bu yoldaki bir klasöre koyarak veya yola yeni bir klasör ekleyerek çözülebilir - her ikisi de çalışır. En iyi cevap şunlara bağlıdır:

Bu program, kaynağından derlediğiniz indirilmiş bir program mı?

Büyük olasılıkla zaten bir kurulum mekanizması olacak. Programı derlediğiniz klasörde root olarak 'make install' komutunu çalıştırın

Bu program, bilgisayardaki standart programların bir parçası olarak kullanılabilir olmasını istediğiniz karşıdan yüklenen bir program mı?

Bu tür bir uygulamayı standart bir klasöre koymak mantıklıdır. bu tür programlar için/usr/local/bin gibi dizinleri kullanmak oldukça yaygındır. Bunu yapmak için root erişimine ihtiyacınız olacak.

Bu, kendiniz için yazdığınız ve/veya bilgisayarda özel ayrıcalıklarınız olmayan bir programdır.

Ana dizininizde 'bin' adlı bir klasör oluşturmak ve programı oraya yerleştirmek. Bu klasöre tam yolu eklemek için giriş komut dosyanızı düzenlemeniz gerekebilir (ör./Usr/home/jeremy/bin)

Geçerli dizinini arama yoluna ekleyebilmenize rağmen, bunu her yeni programla yapmaya devam etmeniz gerekir - ve uzun vadede daha fazla çalışmadır.

24
Michael Shaw

/bin dizini, birden fazla nedenden dolayı yapılacak en iyi şey değildir.

  • Gerçek yürütülebilir dosya, bazı kullanıcıların göremediği veya yürütemediği bir konumdaysa, dosyayı kötü bir bağlantı veya işlevsiz program olarak görürler.
  • /bin dizini, sistemi çalıştırmak için gerekli olan programlar için ayrılmalıdır (chmod, mkdir, vb.).

Yürütülebilir dosyayı /usr/bin/ ya da /usr/local/bin/. Tabii ki, programı o noktada manuel olarak yüklediniz; dağıtımınız programlarınızın geri kalanında olduğu gibi bunu takip etmeyecektir - gerektiğinde manuel olarak yükseltmeniz ve gitmesini istiyorsanız manuel olarak kaldırmanız gerekir. Ayrıca, hangi paketlere bağlı olduğunu bilmeniz gerekir (programı zaten kullandığınız anlaşılıyor, bu yüzden halledilir, ancak genel olarak ...).

Diğer kullanıcıların kullanmasını beklediğim bir program kurmadıkça, genel olarak yaptığım şey bu değil: Ana dizinimde sadece benim için bir bin dizini oluşturuyorum ve Shell profilimi ~/bin/ _ PATH ortam değişkenime. Bu şekilde yüklediğim programları takip etmeyi daha kolay buluyorum, çünkü sistemin geri kalanından ayrılıyor.

17
Shawn J. Goff

Shell'in şu anda bulunduğu dizinde foo komutunu çalıştırmak istiyorsanız, temel olarak iki seçeneğiniz vardır:

  1. Kabuk İstemi'ne ./foo yazın.

  2. . dizinini (. "geçerli dizin" için bir ad) PATH ortam değişkenine ekleyin; bunu nasıl yaptığınız kullandığınız Shell'e bağlıdır:

    • bourne tipi mermiler (bash, zsh, ksh, vb.) için yazıyorsunuz (daha fazla bilgi için bkz bu sayfa ):

      export PATH=$PATH:.
      
    • yazdığınız csh tipi mermiler (tcsh, csh) için (daha fazla bilgi için bkz bu sayfa ):

      set path = ( $path .)
      

2. çok kullanıcılı sistemlerde bir güvenlik riski oluşturduğunu unutmayın: cd dizinini /tmp dizinine ve kötü niyetli bir kullanıcının burada ls adında bir kötü amaçlı yazılım ikili dosyası oluşturduğunu düşünün. .

6
Riccardo Murri

PATH ile uğraşmak sizi yanlışlıkla kötü amaçlı programları çalıştırmaya açar. Standart, /usr/local (bkz. FHS , Unix kullanımını kodlar: biraz tarihli, ancak mantıklı verir)., /usr/local/bin genellikle tüm kullanıcılar için PATH öğesinde bulunur.

"Yerel olarak yüklenen" programlarım $HOME/bin, ./configure --prefix=$HOME ..., seçmek için birkaç (bash) takma adla birleştiğinde ör. sistem üzerinde kendi kendine inşa edilmiş git (çatışmayanlar en sonunda PATH içinde bulunur.

1
vonbrand