Nash
Nash (or Nash shell) is a minimalist yet powerful shell with focus on readability and security of scripts. It is inspired by Plan9 rc shell and brings to Linux a similar approach to namespaces(7) creation. There is a nashfmt program to correctly format nash scripts in a readable manner, much like the Golang gofmt program.
Installation
Install the nash-gitAUR package.
Configuration
Make sure that nash has been successfully installed issuing the command below in your current shell:
$ nash
λ>
If it returned a lambda prompt, then everything is fine.
When first executed, nash will create a ~/.nash/
directory in the user's homepath. Enter the command below to discover by yourself what is this directory:
λ> echo $NASHPATH
/home/username/.nash
Put a file called init
inside this directory to configure it.
Nash only has 1 special variable:
-
PROMPT
variable stores the unicode string used for the shell prompt.
Nash default cd is a very simple alias to the builtin function chdir; you may find it odd to use. To improve your usage you can create your own cd alias. In nash you cannot create aliases by matching string to strings, but only binding function to command names. The init below creates a cd alias as example:
defPROMPT = "λ> " fn cd(path) { if $path == "" { path = $HOME } chdir($path) PROMPT = "("+$path+")"+$defPROMPT setenv PROMPT } # bind the "cd" function to "cd" command name bindfn cd cd
After saving the init file, simply start a new shell and now you can use cd as if it were a builtin keyword.
git:(master)λ> nash λ> cd (/home/i4k)λ> cd /usr/local (/usr/local)λ>
For a more elaborated cd or other aliases implementation, see the project dotnash.
Organizing the init
Nash scripts can be modular, but there is no concept of package. You can use the import keyword to load other files inside the current script session. For an example, see dotnash init.
Configuring $PATH
Inside the init put the code below (edit for your needs):
path = ( "/bin" "/usr/bin" "/usr/local/bin" $HOME+"/bin" ) PATH = "" for p in $path { PATH = $PATH+":"+$p } setenv PATH
Making nash your default shell
See Command-line shell#Changing your default shell.
Usage
Keybindings
The cli supports emacs and vi modes for common buffer editing. Default mode is emacs and you can change issuing:
λ> set mode vi