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


76

Mevcut dizinimden bağımsız olarak belirli bir programı çalıştırabilmek istersem ne yapmalıyım? /binKlasördeki programa sembolik bir bağlantı oluşturmalı mıyım ?


5
hayır, kabuğun PATH değişkenini kullanmalısınız.
msn

7
Kişisel bir ~/bin/klasör oluşturmak , yolunuza THAT eklemek ve bu klasörde istediğiniz yerde çalıştırılabilir istediğiniz herhangi birşeye sembolik bağlantılar oluşturmak iyi olur.
frabjous

1
Yürütmek istediğiniz ikiliye tam yolunu içeren bir diğer ad da ayarlayabilirsiniz.
datasmurf

Yanıtlar:


53

Sadece export PATH=$PATH:</path/to/file>komut satırına yazarsanız, sadece oturumun uzunluğu için sürecek.

Kalıcı olarak değiştirmek istiyorsanız export PATH=$PATH:</path/to/file>, ~ / .bashrc dosyasına ekleyin (sadece sonunda gayet iyi).


11
Teşekkürler işe yarıyor. Benim gibi yeni başlayanlar için köşebentleri <> çıkarmayı unutmayın. Bunun gibi: $ PATH: / sizin / dosya / yolunuz
SAm

4
Ayrıca program dosyasının adını yolun içine dahil etmeyin.
Olli Niemitalo

23

Kısa cevap, programı çalıştırmak için, dizininiz ne olursa olsun, programın dizinini arama yolunuzda bulundurmanız gerekir. Sorun, programı o yolda bulunan bir klasöre koyarak ya da yola yeni bir klasör ekleyerek çözülebilir - ikisi de işe yarayacaktır. En iyi cevap şuna bağlıdır:

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

Oldukça büyük olasılıkla zaten bir yükleme 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 kullanmak istediğiniz indirilmiş 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ın bulunmadığı bir programdır.

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

Mevcut dizinini arama yoluna ekleyebilseniz de, bunu her yeni programla yapmaya devam etmeniz gerekecektir - ve uzun vadede daha fazla iş demektir.


15

/binDizine dosyaya bir bağlantı yerleştirmek , birçok nedenden ötürü 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 bir program olarak görürler.
  • /binDizin sistemini çalıştırmak için gerekli olan programların (gibi şeyler için ayrılmış olması gerekiyordu chmod, mkdirvs.).

Aslında içinde yürütülebilir dosya yerleştirmek (yükleme) olabilir /usr/bin/ya da hatta /usr/local/bin/. Tabii ki, programı bu noktada el ile yüklediniz; dağıtımınız programlarınızın geri kalanını nasıl takip edeceğini 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 bilmek zorunda kalacaksınız (programı zaten kullanıyormuşsunuz gibi geliyor, bu yüzden bu genel olarak halledilir, ancak genel olarak…).

Diğer kullanıcıların kullanmasını beklediğim bir program oluşturmadığım sürece, genelde yaptığım şey bu değil: Sadece ev dizinimde bir bin dizini oluşturdum ve kabuk değişkenimi çevre değişkenime eklemek ~/bin/için düzenledim PATH. Bu şekilde kurduğum programları takip etmeyi daha kolay buluyorum, çünkü sistemin geri kalanından ayrılmış.


6

fooKabuğunuzun bulunduğu dizinde bir komut çalıştırmak istiyorsanız , temel olarak iki seçeneğiniz vardır:

  1. Tip ./fooKabuk isteminde.

  2. .Dizini ( ."geçerli dizin" için bir addır) PATHortam değişkenine ekleyin ; Bunu nasıl yaptığınız kullandığınız kabuğa bağlıdır:

    • Bourne tipi mermiler için (bash, zsh, ksh, vs.) yazıyorsunuz ( daha fazla bilgi için bu sayfaya bakınız ):

      export PATH=$PATH:.
      
    • csh-tipi kabukları (tcsh, csh) için yazdığınız ( daha fazla bilgi için bu sayfaya bakınız ):

      set path = ( $path .)
      

2. çok kullanıcılı sistemlerde güvenlik riski olduğunu unutmayın: sizi cddizine aldığınızı /tmpve kötü niyetli bir kullanıcının lsorada adında bir kötü amaçlı yazılım ikili oluşturduğunu hayal edin .


2
evet, bence seçenekler size Unix'in bazı şeyleri yapmanıza izin verdiğini, bunun kötü bir uygulama olarak kabul edildiğini gösteriyor. Ekleme . kendi yolunda da genellikle kötü olan diğer yan etkiler yaratabilir.
Unix Kapıcısı,

1

PATHYanlışlıkla uğraşmak, sizi kötü niyetli programları çalıştırmak için açar. Standart altında "Yerel" şeyler yüklemektir /usr/local(bkz FHS . Unix kullanımını düzenliyor,: biraz tarihli ama gerekçesini verir), /usr/local/bingenellikle olduğu PATHtüm kullanıcılar için.

"Yerel olarak kurulmuş" programlarım $HOME/bin, standart dansa göre ayarlandı, ./configure --prefix=$HOME ...örneğin sistemin üzerine kendi kendine inşa edilen bir tane (çarpışmayan programlar PATHsonda bulunur) seçmek için birkaç (bash) takma adıyla birleşti .

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.