unix shell differences

This table below lists most features that I think would make you
choose one shell over another. It is not intended to be a definitive
list and does not include every single possible feature for every
single possible shell. A feature is only considered to be in a shell
if in the version that comes with the operating system, or if it is
available as compiled directly from the standard distribution. In
particular the C shell specified below is that available on SUNOS 4.*,
a considerable number of vendors now ship either tcsh or their own
enhanced C shell instead (they don't always make it obvious that they
are shipping tcsh.

Code:


sh csh ksh bash tcsh zsh rc
es













Job control N Y Y Y Y Y N
N













Aliases N Y Y Y Y Y N
N













Shell functions Y(1) N Y Y N Y Y
Y













"Sensible" Input/Output redirection Y N Y Y N Y Y
Y













Directory stack N Y Y Y Y Y F
F













Command history N Y Y Y Y Y L
L













Command line editing N N Y Y Y Y L
L













Vi Command line editing N N Y Y Y(3) Y L
L













Emacs Command line editing N N Y Y Y Y L
L













Rebindable Command line editing N N N Y Y Y L
L













User name look up N Y Y Y Y Y L
L













Login/Logout watching N N N N Y Y F
F













Filename completion N Y(1) Y Y Y Y L
L













Username completion N Y(2) Y Y Y Y L
L













Hostname completion N Y(2) Y Y Y Y L
L













History completion N N N Y Y Y L
L













Fully programmable Completion N N N N Y Y N
N













Mh Mailbox completion N N N N(4) N(6) N(6) N
N













Co Processes N N Y N N Y N
N













Builtin artithmetic evaluation N Y Y Y Y Y N
N













Can follow symbolic links invisibly N N Y Y Y Y N
N













Periodic command execution N N N N Y Y N
N













Custom Prompt (easily) N N Y Y Y Y Y
Y













Sun Keyboard Hack N N N N N Y N
N













Spelling Correction N N N N Y Y N
N













Process Substitution N N N Y(2) N Y Y
Y













Underlying Syntax sh csh sh sh csh sh rc
rc













Freely Available N N N(5) Y Y Y Y
Y













Checks Mailbox N Y Y Y Y Y F
F













Tty Sanity Checking N N N N Y Y N
N













Can cope with large argument lists Y N Y Y Y Y Y
Y













Has non-interactive startup file N Y Y(7) Y(7) Y Y N
N













Has non-login startup file N Y Y(7) Y Y Y N
N













Can avoid user startup files N Y N Y N Y Y
Y













Can specify startup file N N Y Y N N N
N













Low level command redefinition N N N N N N N
Y













Has anonymous functions N N N N N N Y
Y













List Variables N Y Y N Y Y Y
Y













Full signal trap handling Y N Y Y N Y Y
Y













File no clobber ability N Y Y Y Y Y N
F













Local variables N N Y Y N Y Y
Y













Lexically scoped variables N N N N N N N
Y













Exceptions N N N N N N N
Y

Key to the table above.

Y Feature can be done using this shell.

N Feature is not present in the shell.

F Feature can only be done by using the shells function
mechanism.

L The readline library must be linked into the shell to enable
this Feature.


Notes to the table above



1. This feature was not in the orginal version, but has since become

almost standard.

2. This feature is fairly new and so is often not found on many

versions of the shell, it is gradually making its way into

standard distribution.

3. The Vi emulation of this shell is thought by many to be

incomplete.

4. This feature is not standard but unoffical patches exist to

perform this.

5. A version called 'pdksh' is freely available, but does not have

the full functionality of the AT&T version.

6. This can be done via the shells programmable completion mechanism.

7. Only by specifing a file via the ENV environment variable.


Calculate Your Swap Space

Multiply the Blocks column by 512
# swap -l
swapfile dev swaplo blocks free
/dev/dsk/c1t0d0s1 32,1 8 2104504 2104504
#

2104504 * 512 = 1077MB

check what shell you're running with

check what shell you're running
$ pargs $$

It reports current shell and previous shell

List of commands - process Management

  • pargs ---> Get list of arguments and environment variables with which process was started
  • pfiles ---> List of file descriptors, associated with process
  • pgrep ---> Get the pid's of processes by name i.e. Something like ps efl|grep v grep|grep process_name
  • pkill ---> Send signal to process. For example pkill 9 init :p
  • pldd ---> List dynamic libraries, associated with process, similar to ldd for executable
  • pmap ---> Get memory map (segments) of process
  • preap ---> Try to kickoff zombie process
  • prstat ---> Fullscreen view of processes sorted by different criteria, similar to linux top command
  • prun ---> Continue hold with pstop process
  • ps --->Print process information and status. In solaris exist sysv and bsd variants, respectively /usr/bin/ps and /usr/ucb/ps
  • psig ---> List signals that can be handled by process
  • pstack ---> Get backtrace stack of process for debugging purposes
  • pstop ---> Temporary hold process
  • ptree ---> Print the tree of processes
  • pwait ---> Wait till process finish
  • pwdx ---> List working directory for process, like pwd command
  • plockstat ---> See list of locked by process files. Lock can be mutex i.e. Exclusive and reader/writer for shared access
  • apptrace ---> For tracing library calls
  • dtrace ---> Debugger, new in version 10
  • truss ---> For tracing user/library/system calls and signals