我有一個通過使用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