编辑
2024-06-08
LinuxNotes
00

目录

1. source test.sh
2. bash test.sh
3. ./test.sh
示例
使用 source:
使用 bash 或 ./:
选择使用哪种方式取决于你是否需要脚本改变当前 Shell 的环境以及脚本是否具有执行权限。
特性source test.shbash test.sh./test.sh
执行环境当前 Shell子 Shell子 Shell
环境变量影响会影响当前 Shell不影响当前 Shell不影响当前 Shell
脚本权限不需要执行权限不需要执行权限需要执行权限
执行速度较快(无子 Shell 开销)较慢(有子 Shell 开销)较慢(有子 Shell 开销)
使用场景改变当前 Shell 环境独立执行脚本独立执行脚本

1. source test.sh

描述:在当前 Shell 会话中执行 test.sh 脚本。
执行环境:脚本中的所有命令在当前 Shell 中执行,任何环境变量的更改或定义都会影响当前 Shell。
适用场景:需要脚本更改当前 Shell 的环境,例如定义或修改变量、改变目录等。

bash
source test.sh # 或者 . test.sh

2. bash test.sh

描述:启动一个新的 Bash Shell 会话来执行 test.sh 脚本。
执行环境:脚本在一个新的子 Shell 中运行,脚本中的环境变量和目录改变不会影响当前 Shell。
适用场景:不需要脚本改变当前 Shell 的环境,脚本可以独立执行。

bash
bash test.sh

3. ./test.sh

描述:在当前 Shell 中启动一个新的子进程来执行 test.sh 脚本。脚本必须具有执行权限。
执行环境:脚本在一个新的子 Shell 中运行,类似于 bash test.sh,环境变量和目录改变不会影响当前 Shell。
适用场景:与 bash test.sh 类似,需要脚本具有执行权限。

bash
chmod +x test.sh ./test.sh

示例

假设 test.sh 脚本内容如下:

bash
#!/bin/bash echo "Current directory is: $(pwd)" MYVAR="Hello" echo "MYVAR is: $MYVAR"

使用 source

bash
source test.sh echo "After sourcing, MYVAR is: $MYVAR"

输出

bash
Current directory is: /path/to/dir MYVAR is: Hello After sourcing, MYVAR is: Hello

MYVAR 的值在当前 Shell 中被保留。

使用 bash./

bash
bash test.sh echo "After running bash, MYVAR is: $MYVAR"

bash
./test.sh echo "After running ./, MYVAR is: $MYVAR"

输出

bash
Current directory is: /path/to/dir MYVAR is: Hello After running bash, MYVAR is:

MYVAR 的值在当前 Shell 中未被保留。

选择使用哪种方式取决于你是否需要脚本改变当前 Shell 的环境以及脚本是否具有执行权限。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:GYC

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!