Changes

Jump to navigation Jump to search
m
Text replacement - "</source>" to "</syntaxhighlight>"
Line 6: Line 6:  
* A Subshell can be used to do parallel processing.
 
* A Subshell can be used to do parallel processing.
 
* If you start another shell on top of your current shell, it can be referred to as a subshell. Type the following command to see subshell value:
 
* If you start another shell on top of your current shell, it can be referred to as a subshell. Type the following command to see subshell value:
<syntaxhighlight lang="bash" >echo $BASH_SUBSHELL</source>
+
<syntaxhighlight lang="bash" >echo $BASH_SUBSHELL</syntaxhighlight>
 
OR
 
OR
<syntaxhighlight lang="bash" >echo "Current shell: $BASH_SUBSHELL"; ( echo "Running du in subshell: $BASH_SUBSHELL" ;cd /tmp; du 2>/tmp/error 1>/tmp/output)</source>
+
<syntaxhighlight lang="bash" >echo "Current shell: $BASH_SUBSHELL"; ( echo "Running du in subshell: $BASH_SUBSHELL" ;cd /tmp; du 2>/tmp/error 1>/tmp/output)</syntaxhighlight>
 
* Any commands enclosed within parentheses are run in a subshell.  
 
* Any commands enclosed within parentheses are run in a subshell.  
 
==Exporting Functions and Variables==
 
==Exporting Functions and Variables==
Line 17: Line 17:  
export -f die
 
export -f die
 
# now call script that will access die() and $WWWJAIL
 
# now call script that will access die() and $WWWJAIL
/etc/nixcraft/setupjail -d cyberciti.com</source>
+
/etc/nixcraft/setupjail -d cyberciti.com</syntaxhighlight>
 
* However, environment variables (such as $HOME, $MAIL etc) are passed to subshell.  
 
* However, environment variables (such as $HOME, $MAIL etc) are passed to subshell.  
 
==Use exec command to avoid subshell==
 
==Use exec command to avoid subshell==
Line 23: Line 23:  
<syntaxhighlight lang="bash" >exec command
 
<syntaxhighlight lang="bash" >exec command
 
# redirect the shells stderr to null
 
# redirect the shells stderr to null
exec 2>/dev/null</source>
+
exec 2>/dev/null</syntaxhighlight>
 
==The . (dot) Command and Subshell==
 
==The . (dot) Command and Subshell==
 
The . (dot) command is used to run shell scripts as follows:
 
The . (dot) command is used to run shell scripts as follows:
<syntaxhighlight lang="bash" >. script.sh</source>
+
<syntaxhighlight lang="bash" >. script.sh</syntaxhighlight>
 
The dot command allows you to modify current shell variables. For example, create a shell script as follows called /tmp/dottest.sh:
 
The dot command allows you to modify current shell variables. For example, create a shell script as follows called /tmp/dottest.sh:
 
<syntaxhighlight lang="bash" >#!/bin/bash
 
<syntaxhighlight lang="bash" >#!/bin/bash
 
echo "In script before : $WWWJAIL"
 
echo "In script before : $WWWJAIL"
 
WWWJAIL=/apache.jail
 
WWWJAIL=/apache.jail
echo "In script after : $WWWJAIL"</source>
+
echo "In script after : $WWWJAIL"</syntaxhighlight>
 
Close and save the file. Run it as follows:
 
Close and save the file. Run it as follows:
<syntaxhighlight lang="bash" >chmod +x /tmp/dottest.sh</source>
+
<syntaxhighlight lang="bash" >chmod +x /tmp/dottest.sh</syntaxhighlight>
 
Now, define a variable called WWWJAIL at a shell prompt:
 
Now, define a variable called WWWJAIL at a shell prompt:
 
<syntaxhighlight lang="bash" >WWWJAIL=/foobar
 
<syntaxhighlight lang="bash" >WWWJAIL=/foobar
echo $WWWJAIL</source>
+
echo $WWWJAIL</syntaxhighlight>
 
Sample outputs:
 
Sample outputs:
 
<pre>/foobar</pre>
 
<pre>/foobar</pre>
 
Run the script:
 
Run the script:
<syntaxhighlight lang="bash" >/tmp/dottest.sh</source>
+
<syntaxhighlight lang="bash" >/tmp/dottest.sh</syntaxhighlight>
 
Check the value of WWWJAIL:
 
Check the value of WWWJAIL:
<syntaxhighlight lang="bash" >echo $WWWJAIL</source>
+
<syntaxhighlight lang="bash" >echo $WWWJAIL</syntaxhighlight>
 
You should see the orignal value of $WWWJAIL (/foobar) as the shell script was executed in a subshell. Now, try the dot command:
 
You should see the orignal value of $WWWJAIL (/foobar) as the shell script was executed in a subshell. Now, try the dot command:
 
<syntaxhighlight lang="bash" > . /tmp/dottest.sh
 
<syntaxhighlight lang="bash" > . /tmp/dottest.sh
echo $WWWJAIL</source>
+
echo $WWWJAIL</syntaxhighlight>
 
Sample outputs:
 
Sample outputs:
 
<pre>/apache.jail</pre>
 
<pre>/apache.jail</pre>

Navigation menu