|
Lines 3975-3982
Link Here
|
| 3975 |
|
3975 |
|
| 3976 |
<qandaentry> |
3976 |
<qandaentry> |
| 3977 |
<question id="minimal-sh"> |
3977 |
<question id="minimal-sh"> |
| 3978 |
<para>Why is <command>/bin/sh</command> so minimal? Why does |
3978 |
<para>Why is <command>/bin/sh</command> so minimal? Why |
| 3979 |
&os; not use <command>bash</command> or another |
3979 |
does &os; not use <command>bash</command> or another |
| 3980 |
shell?</para> |
3980 |
shell?</para> |
| 3981 |
</question> |
3981 |
</question> |
| 3982 |
|
3982 |
|
|
Lines 3986-4010
Link Here
|
| 3986 |
|
3986 |
|
| 3987 |
<para>The more complicated answer: many people need to write |
3987 |
<para>The more complicated answer: many people need to write |
| 3988 |
shell scripts which will be portable across many systems. |
3988 |
shell scripts which will be portable across many systems. |
| 3989 |
That is why &posix; specifies the shell and utility commands |
3989 |
That is why &posix; specifies the shell and utility |
| 3990 |
in great detail. Most scripts are written in Bourne shell, |
3990 |
commands in great detail. Most scripts are written in |
| 3991 |
and because several important programming interfaces |
3991 |
Bourne shell (&man.sh.1;), and because several important |
| 3992 |
(&man.make.1;, &man.system.3;, &man.popen.3;, and analogues |
3992 |
programming interfaces (&man.make.1;, &man.system.3;, |
| 3993 |
in higher-level scripting languages like Perl and Tcl) are |
3993 |
&man.popen.3;, and analogues in higher-level scripting |
| 3994 |
specified to use the Bourne shell to interpret commands. |
3994 |
languages like Perl and Tcl) are specified to use the |
| 3995 |
Because the Bourne shell is so often and widely used, it is |
3995 |
Bourne shell to interpret commands. Because the Bourne |
| 3996 |
important for it to be quick to start, be deterministic in |
3996 |
shell is so often and widely used, it is important for it |
| 3997 |
its behavior, and have a small memory footprint.</para> |
3997 |
to be quick to start, be deterministic in its behavior, |
|
|
3998 |
and have a small memory footprint.</para> |
| 3998 |
|
3999 |
|
| 3999 |
<para>The existing implementation is our best effort at |
4000 |
<para>The existing implementation is our best effort at |
| 4000 |
meeting as many of these requirements simultaneously as we |
4001 |
meeting as many of these requirements simultaneously as we |
| 4001 |
can. In order to keep <command>/bin/sh</command> small, we |
4002 |
can. In order to keep <command>/bin/sh</command> small, |
| 4002 |
have not provided many of the convenience features that |
4003 |
we have not provided many of the convenience features that |
| 4003 |
other shells have. That is why the Ports Collection |
4004 |
other shells have. That is why &os; and the Ports |
| 4004 |
includes more featureful shells like |
4005 |
Collection include more featureful shells like |
| 4005 |
<command>bash</command>, <command>scsh</command>, |
4006 |
<command>bash</command>, <command>scsh</command>, |
| 4006 |
<command>tcsh</command>, and <command>zsh</command>. (You |
4007 |
&man.tcsh.1;, and <command>zsh</command>. (You can |
| 4007 |
can compare for yourself the memory utilization of all these |
4008 |
compare for yourself the memory utilization of all these |
| 4008 |
shells by looking at the <quote>VSZ</quote> and |
4009 |
shells by looking at the <quote>VSZ</quote> and |
| 4009 |
<quote>RSS</quote> columns in a <command>ps |
4010 |
<quote>RSS</quote> columns in a <command>ps |
| 4010 |
<option>-u</option></command> listing.)</para> |
4011 |
<option>-u</option></command> listing.)</para> |