2009-02-05 13 views
5

Google'da arama yaptım, ancak bu basit soruya bir cevap bulamadım. (! #) Ben ilk satırda karma-patlama olan bir python komut vardır:Tercih edilen yolu #! kabuk betiklerinde

#!/usr/bin/python 

Ancak, ne bu eğer/bin/python piton sahip bir bilgisayarda çalıştırıldığında veya/usr/local/bin/python veya başka bir yer? Bir kabuk betiği için yorumlayıcıyı belirlemenin daha iyi bir yolu olmalı. Sisteme kurulduktan sonra python'un nerede bulunacağını bileceği için, $ PATH ile ayarlamak mümkün olmalıdır.

cevap

12

Kullanım env.

#!/usr/bin/env python 

Bu, kurşun geçirmez değil,/usr/bin/python'dan daha fazla vakayı kapsar.

+0

Bunu yaptım bilmiyorum! Ancak, bu küçük bir güvenlik riskidir - kötü niyetli bir kullanıcı kendi ikili kodunu ./python'a yerleştirebilir ve "." Olan bir kullanıcı olduğunda hedef kullanıcı olarak eylemleri yürütebilir. onların $ PATH içinde bu karma-patlama hattı ile bir Python betiği çalışır. –

+0

İkili dosyalarınız için PATH aranması normaldir. Senaryonuzdaki problem, kullanıcının "." onların yollarında, komutları çalıştırmak için PATH kabuklarını kullanıyorlar. –

+0

@Phil: Prensip olarak, problemin $ PATH ile olduğu konusunda hemfikirim, fakat pratikte, eğer kullanıcılar genellikle bu hatayı yapıyorlarsa, bir ölçüde bunu görmezden gelmek sorumsuzluktur. –

4

Kullanım

#!/usr/bin/env python 

env neredeyse her zaman /usr/bin olduğunu ve PATH herhangi bir program çalıştırır.

3

Bazı insanlar başlamayı tercih:

#!/usr/bin/env python 

şimdi python'un yolunda olduğunu ve doğru sürüm olduğunu varsayıyoruz ama bu bir seçenek olarak bu büyük bir gelişme olduğundan emin değil.

İlgili konular