我有一个通过使用runhaskell
实用程序的shebang行来运行的Haskell脚本。 E.g ...现在如何确定正在运行的Haskell脚本或应用程序的目录?
#! /usr/bin/env runhaskell
module Main where
main = do { ... }
,我希望能够确定在该脚本驻留从脚本中,本身目录。所以,如果脚本存在于/home/me/my-haskell-app/script.hs
中,我应该能够使用相对路径或绝对路径从任何位置运行它,并且它应该知道它位于/home/me/my-haskell-app/
目录中。
我认为System.Environment
模块中可用的功能可能会有所帮助,但效果会有所下降。 getProgName
似乎没有提供有用的文件路径信息。我发现环境变量_
(这是一个下划线)有时包含脚本的路径,因为它被调用;然而,只要脚本通过其他程序或父脚本调用,该环境变量似乎失去了它的价值(我需要从另一个父应用程序调用我的Haskell脚本)。
也有用的知道是否我可以使用相同的技术或其他方法确定预编译的Haskell可执行文件所在的目录。
FindBin包似乎也适用于基于runhaskell的脚本。 – 2010-07-26 21:08:20