There are several ways to execute a shell script
1, relative path mode, need to first CD to script path
Copy Code code as follows:
[Root@banking tmp]# Cd/tmp
[Root@banking tmp]#./ceshi.sh
Script execution succeeded
2. Absolute path mode
Copy Code code as follows:
[Root@banking tmp]#/tmp/ceshi.sh
Script execution succeeded
3. Bash Command call
Copy Code code as follows:
[Root@banking/]# bash/tmp/ceshi.sh
Script execution succeeded
4,. (space) A relative or absolute way
Copy Code code as follows:
[Root@banking/]#. /tmp/ceshi.sh
The difference of several ways
There is no difference between the first and the second, both of which require a script to execute permissions in advance.
The third is to handle the script as a call to bash, so the script does not need execute permissions to execute.
The first three ways are to open a child shell in the current shell to execute the script content, and when the content of the script ends, the child shell closes and goes back to the parent shell.
The fourth is to make the content of the script execute in the current shell instead of opening the child shell alone.
The difference between the open shell and the open shell is that the inheritance of the environment variables, such as the current variable set in the child shell, does not make special channel processing, the parent shell is not visible.
When executed in the current shell, all set environment variables are valid for immediate use.
Verify:
Copy Code code as follows:
[Root@banking/]# cat/tmp/ceshi.sh
Top
1, the first three kinds of execution mode under the Pstree display
Copy Code code as follows:
├─sshd─┬─sshd───bash───bash───top
│└─sshd───bash───pstree
2, the fourth way of implementation of the Pstree display
Copy Code code as follows:
├─sshd─┬─sshd───bash───top
│└─sshd───bash───pstree
3, verify the environment variable settings of the inheritance and visibility relationships
Create two scripts, father.sh and subshell.sh. where father.sh calls subshell.sh
Copy Code code as follows:
[Root@banking/]# cat/tmp/father.sh
V_ceshi= ' father '
#-------Define variables in the parent shell
echo "Invoke script as a child shell"
/tmp/subshell.sh
echo "Output V_ceshi value is ${v_ceshi}"
echo ""
echo "Execute script in current Shell"
. /tmp/subshell.sh
echo "Output V_ceshi value is ${v_ceshi}"
[Root@banking/]#
[Root@banking/]# cat/tmp/subshell.sh
V_ceshi=son
[Root@banking/]#
Execution results are
Copy Code code as follows:
[Root@banking/]#/tmp/father.sh
Calling script as a child shell
Output V_ceshi value is Father
Executing scripts in the current shell
Output V_ceshi value is son