【发布时间】:2011-03-21 05:53:51
【问题描述】:
我有一个 Haskell 脚本,它通过使用 runhaskell 实用程序的 shebang 行运行。比如……
#! /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 可执行文件所在的目录。
【问题讨论】:
标签: haskell path absolute-path