2010-07-23 21 views
7

Esiste un equivalente sh di __FILE__, per fornirmi il nome percorso del file attualmente in esecuzione? Le soluzioni POSIX preferite, bash accettabili, grazie.sh equivalente a __FILE__

+0

possibile duplicato di [Può uno script Bash dire che cosa directory è memorizzato in?] (Http: // StackOverflow .com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in) – rightfold

risposta

5

Provare a utilizzare $0.

+4

Questo non è equivalente a '__FILE__' se lo stai facendo in un file che è originato da un altro file . – mxcl

+0

come su "quale $ 0"? –

0

Solo un pensiero:

#!/usr/bin/env bash 

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

Non sarà corretto se lo script viene chiamato tramite la variabile $ PATH. –

+0

Ancora (vedi modifica)? – miku

+0

Si noti che 'readlink' non è interamente portatile. OSX (e presumibilmente BSD in generale?) Hanno una versione completamente diversa - dove '-f' non è supportato. Piuttosto, dove '-f' significa qualcosa di diverso (e non utile qui). – Telemachus