2010-07-23 69 views
7

有没有相当于__FILE__的sh,给我当前正在执行的文件的路径名?首选POSIX解决方案,bash可以接受,谢谢。sh等效于__FILE__

+0

可能重复[一个bash脚本可以告诉目录它存放在?(HTTP://计算器.com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in) – rightfold 2015-03-20 09:09:17

回答

5

尝试使用$0

+4

这不等同于'__FILE__',如果你在一个源自另一个文件的文件中。 – mxcl 2012-08-15 14:20:51

+0

怎么样“哪个$ 0”? – 2013-07-06 12:53:12

0

只是一个想法:

#!/usr/bin/env bash 

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

如果通过$ PATH变量调用该脚本,则这将不正确。 – 2010-07-23 14:26:06

+0

仍然(请参阅编辑)? – miku 2010-07-23 14:28:33

+0

请注意'readlink'不是完全可移植的。 OSX(大概是BSD)有一个完全不同的版本 - 其中'-f'不被支持。相反,'-f'表示不同的东西(这里没有帮助)。 – Telemachus 2010-07-23 14:29:37