A Linux shell is the program which interprets what you type on the command line and decides what to do with that. A shell can be invoked in a non-interactive way, for example to execute a pre-typed list of commands contained in a text file (a “shell script”). Think of a shell as the equivalent of the DOS “command.com” (command-line interpreter) and the shell script comparison with their DOS cousins, the Linux shell and scripting are on steroids.
There are several shells available on the Linux system (if you installed them):bash (“Bourne Again” shell), sh (Bourne shell, standard on many UNIX systems), csh (C shell, with a syntax akin to the “c”programming language, available on most UNIX systems), pdksh (public domain korn shell), tcsh (tiny C shell, often used on small systems), sash (stand-alone shell could be used when librates are not available) ,ash,zsh and perhaps a couple more.
The default shell on my system (and most probably on yours too) is bash, which is an excellent and standard shell, and I really cannot see a reason why a newbie like myself would want to change it. Bash is fully backwards-compatible with the bourne shell (the most popular shell on UNIX) and incorporates many enhancements and best features from other shells. From a newbie perspective, the different shells are included with Linux for historical reasons and backwards-compatibility of shell scripts that may require a particular shell to run. [Some shells may be useful if you write programme targeted for specialized “embedded” devices, that might run a “tiny” shell.]
You can determine the shell you are running using:
Echo $SHELL
If you wanted to try another shell, type,or for example:
Tcsh
Which will start the tiny c shell. When done,type
Exit
Which will return you to previous shell (using exit on your will log you out). You can find how many shells you stacked on each other by displaying the “shell level” environmental variable:
Exho $SHLVL
In the above command, the “$” means “expand the value of a shell environment variable”,”SHLVL” is the variable name, and “echo” is a command that prints things.
The shell for each user is specified as the last field in the password file/etc/password. If you really wanted to change it, edit (as root) this file and replace the “/bin/bash” with the shell of your choice.
Network File System (NFS)
This is great for direct access to files that reside on another Linux computer. For mounting of a remote filesystem as NFS,first check if the NFS services is enabled (use the program setup). NFS also requires permission from the other computer. To configure the permission on the server machine, run as root:
Netconf
And adjust the setting under “Exported File Systems” menu.
If you prefer to do it manually, the permission are set in the file/etc/exports. My /etc/exports looks like this:
/usr hacer (ro)mars(ro)
/home hacker(rw)mars(rw)
/mnt hacker(rw)mars(rw)
This gives the machines called hacker and mars the permission to mount the directories/usr/(read-only access),/ home and /mnt (read-write).
This gives the machines called hacker and mars the permission to mount the directories/usr/(read-only access),/home and mnt (read-write).
If you set up your NFS properly, you should now be able to mount a network directory using a command like this:
Mount-t nfs mars:/home/mnt/mars_home
This mounts the contents of the directory/home/on a machine called “mars” into the directory /mnt/mars_home/(which must exist and be empty).
Many operating systems know NFS, but MS Windows doesn’t. Therefore MS Windows remote shares have to be dealt with differently.