2010-07-23 2 views
7

Existe-t-il un équivalent SH de __FILE__, pour me donner le chemin du fichier en cours d'exécution? Les solutions POSIX préférées, bash acceptable, merci.sh équivalent de __FILE__

+0

double possible de [peut un script Bash dire ce répertoire dans lequel il est stocké dans?] (Http: // stackoverflow .com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in) – rightfold

Répondre

5

Essayez d'utiliser $0.

+4

Ceci n'est pas équivalent à '__FILE__' si vous le faites dans un fichier provenant d'un autre fichier . – mxcl

+0

que diriez-vous de "quel $ 0"? –

0

Juste une pensée:

#!/usr/bin/env bash 

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

Cela sera incorrect si le script est appelé via la variable $ PATH. –

+0

Toujours (voir modifier)? – miku

+0

Notez que 'readlink' n'est pas entièrement portable. OSX (et vraisemblablement BSD en général?) Ont une version complètement différente - où '-f' n'est pas supporté. Plutôt, où '-f' signifie quelque chose de différent (et pas utile ici). – Telemachus