System.Environment

base-4.6.0.1: Basic libraries

Portability | portable
Stability | provisional
Maintainer | libraries@haskell.org
Safe Haskell | Safe

System.Environment

Description

Miscellaneous information about the system environment.

Synopsis

- getArgs :: IO [String]
- getProgName :: IO String
- getExecutablePath :: IO FilePath
- getEnv :: String -> IO String
- lookupEnv :: String -> IO (Maybe String)
- withArgs :: [String] -> IO a -> IO a
- withProgName :: String -> IO a -> IO a
- getEnvironment :: IO [(String, String)]

# Documentation

getArgs :: IO [String]

Computation `getArgs` returns a list of the program's command line arguments (not including the program name).

getProgName :: IO String

Computation `getProgName` returns the name of the program as it was invoked.

However, this is hard-to-impossible to implement on some non-Unix OSes, so instead, for maximum portability, we just return the leafname of the program as invoked. Even then there are some differences between platforms: on Windows, for example, a program invoked as foo is probably really `FOO.EXE`, and that is what `getProgName` will return.

getExecutablePath :: IO FilePath

Returns the absolute pathname of the current executable.

Note that for scripts and interactive sessions, this is the path to the interpreter (e.g. ghci.)

getEnv :: String -> IO String

Computation `getEnv` `var` returns the value of the environment variable `var`. For the inverse, POSIX users can use `putEnv`.

This computation may fail with:

- `isDoesNotExistError` if the environment variable does not exist.

lookupEnv :: String -> IO (Maybe String)

Return the value of the environment variable `var`, or `Nothing` if there is no such value.

For POSIX users, this is equivalent to `getEnv`.

withArgs :: [String] -> IO a -> IO a

`withArgs` `args act` - while executing action `act`, have `getArgs` return `args`.

withProgName :: String -> IO a -> IO a

`withProgName` `name act` - while executing action `act`, have `getProgName` return `name`.

getEnvironment :: IO [(String, String)]

`getEnvironment` retrieves the entire environment as a list of `(key,value)` pairs.

If an environment entry does not contain an `'='` character, the `key` is the whole entry and the `value` is the empty string.