2010-07-23 13 views
7

Şu anda yürütülen dosyanın yol adını vermek için __FILE__ sh eşdeğeri var mı? POSIX çözümleri tercih edilir, bash kabul edilebilir, teşekkürler.sh eşdeğeri __FILE__

+0

olası yinelenen [için bir Bash script İçinde depolandığı hangi dizin söyleyebilir?] (Http: // stackoverflow .com/questions/59895/can-a-bash-script-tell-what-directory-kendi-saklanan-in) – rightfold

cevap

5

$0'u kullanmayı deneyin.

+4

Başka bir dosyadan gelen bir dosyada yapıyorsanız, bu '__FILE__' ile eşdeğer değildir. . – mxcl

+0

"Hangi $ 0" hakkında ne dersiniz? –

0

Sadece bir düşünce: bir betik çözüm için

#!/usr/bin/env bash 

# "$0" will expand to the name of the script, as called from the command line 
readlink -f $0 
+0

Bu komut, $ PATH değişkeniyle çağrıldığında yanlış olur. –

+0

Yine de (düzenlemeye bakın)? – miku

+0

"readlink" in tamamen taşınabilir olmadığını unutmayın. OSX (ve muhtemelen BSD genel olarak?) Tamamen farklı bir versiyona sahiptir - burada -f seçeneği desteklenmez. Aksine, '-f' farklı bir şey anlamına gelir (ve burada yararlı değil). – Telemachus