linux 下的 source,sh, 三者區別

2021-09-24 21:14:39 字數 1561 閱讀 5421

在linux裡,source、sh、bash、./都可以執行shell script檔案,那它們有什麼不同嗎?

1、source

source a.sh
當前shell內去讀取、執行a.sh,而a.sh不需要有"執行許可權"

source命令可以簡寫為"."

. a.sh
注意:中間是有空格的。

2、sh/bash

sh a.sh

bash a.sh

都是開啟乙個subshell去讀取、執行a.sh,而a.sh不需要有"執行許可權"

通常在subshell裡執行的指令碼裡設定變數,不會影響到父shell的。

3、./

./a.sh

#bash: ./a.sh: 許可權不夠

chmod +x a.sh

./a.sh

開啟乙個subshell去讀取、執行a.sh,但a.sh需要有"執行許可權"

可以用chmod +x新增執行許可權

4、fork、source、exec

通常如果我們執行時,都是預設為fork的。

為了實踐下,我們可以先建立2個s**件,以下**來自chinaunix的網中人:

1.sh

#!/bin/bash

a=becho "pid for 1.sh before exec/source/fork:$$"

export a

echo "1.sh: \$a is $a"

case $1 in

exec)

echo "using exec..."

exec ./2.sh ;;

source)

echo "using source..."

. ./2.sh ;;

*)echo "using fork by default..."

./2.sh ;;

esac

echo "pid for 1.sh after exec/source/fork:$$"

echo "1.sh: \$a is $a"

2.sh

#!/bin/bash

echo "pid for 2.sh: $$"

echo "2.sh get \$a=$a from 1.sh"

a=cexport a

echo "2.sh: \$a is $a"

自己執行下,**結果吧 :)

chmod +x 1.sh

chmod +x 2.sh

./1.sh fork

./1.sh source

./1.sh exec

source sh執行指令碼的區別

主要有兩種方式執行shell指令碼 1 source test.bsh 2 sh test.bsh 1 souce執行指令碼檔案會在父程式中執行,各項動作都會在原本的bash內生效,執行過程不另開程序,指令碼檔案中設定的變數在當前shell中可以看到 如下例子 其中sh檔案內容如下 就是通過read...

Linux下ZendOptimizer的安裝與配置

內容 在裝的好的red hat linux 9 apache 2.0.55 mysql 5.1.6 php 5.1.2後,接下來就是安裝linux下的php加速器zendoptimizer 2.6.2了。自己編譯 php 後,zend optimizer 2.6.2 需要自己設定一下,請參照以下步驟...

Linux下的命令

管理員 普通使用者 pwd 顯示當前檔案全路徑 date 顯示系統當前日期和時間 who 顯示當前已登入的所有使用者名稱 cal 顯示日曆 uname r m,i,v 顯示當前系統作業系統資訊 wc l 行數,w字數,c位元組數 統計字數 clear 清屏 檔案操作touch 新建檔案mkdir 新...