Simple shell written in Haskell

Latest on Hackage:1.0

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.

GPL licensed by Luis Francisco Araujo
Maintained by none
Hashell : A Haskell shell
Version: 0.014a
Status: Alpha


*The Glasgow Haskell Compiler
>= 6.8 <http://haskell.org/ghc>
(any version should work fine; <http://haskell.org/cabal>)
>= 1.0 <http://www.cs.uu.nl/people/daan/parsec.html>

You can build and install Hashell like any other Haskell package, through Cabal; the following example installs as the current user to one's ~/bin directory, but to install elsewhere or as root, simply change the directories or remove the --user flags, respectively:

$ runhaskell Setup configure --verbose=2 --user --prefix=$HOME/bin --datadir=$HOME/bin/share
$ runhaskell Setup build
$ runhaskell Setup install --user;

You need to have Cabal installed in your system.
Cabal will often be part of your GHC installation, but you can get a stand-alone version of Cabal from <http://haskell.org/cabal>.

NOTE! The current version of Hashell assumes you have GHC 6.8.2 installed, and that the output of 'ghc --print-libdir' = "/usr/lib/ghc-6.8.2/". If that's not the right directory, you must edit Hashell/Eval.hs and update the constant 'ghcPath'.


$ hashell


$ hashell -c <configurationfile>

You always can use the --help option for further help.

$ hashell --help

The syntax is still fluid, but roughly, ';' is a terminator; an expression starting with ':' will be treated as a load-file command; one starting with "quit" will exit Hashell; one starting with "cd" will change the working directory; and an expression enclosed in a "!()" will be passed through the GHC API and evaluated as an arbitrary Haskell expression. All other commands should be treated as programs to be run.


Luis Francisco Araujo


Changelog - Hashell (0.011a -> 0.013a)

-- Part of the parsing is now done with Parsec.
Parsec will partially substitute the majority of the parsing tasks.
-- Added a new exception handler for haskell expressions
evaluation. This fixes a bug that aborted hashell.
-- Added redirection of standard error.
-- Fixed 'quit' built-in command bug.
-- Added number identifiers to the redirections operators.
-- Added pre-liminar support for environment variables.
The support is contained into its own module.
-- Changed (_yet_ again) the syntax for sub-process evaluation
from '<|proc|>' to '(-proc-)' (without the quotes).
-- Type constraints for haskell expressions evaluations are now limited
to the ':<s,p,n,u>' notation. Values:
's' String without newline.
'p' Non-String with newline.
'n' Non-String without newline.
'u' String with newline.
-- The 'execSplitToken' function has been re-written. It is now
split into several smaller functions and with better exception handling
-- Hashell will now automatically read the configuration file with name
.hashell_config if it exists inside HOME.
-- The comments format in the hashell configuration file has changed
from '*' to '-'.
-- The command composition feature was removed.
-- Others smaller bugs have been fixed too.

Author: Luis F. Araujo
Sat Jan 7 14:55:04 VET 2006
comments powered byDisqus