在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都是開啟乙個subshell去讀取、執行a.sh,而a.sh不需要有"執行許可權"bash a.sh
通常在subshell裡執行的指令碼裡設定變數,不會影響到父shell的。
3、./
./a.sh開啟乙個subshell去讀取、執行a.sh,但a.sh需要有"執行許可權"#bash: ./a.sh: 許可權不夠
chmod +x a.sh
./a.sh
可以用chmod +x新增執行許可權
4、fork、source、exec
通常如果我們執行時,都是預設為fork的。
為了實踐下,我們可以先建立2個s**件,以下**來自chinaunix的網中人:
1.sh
#!/bin/bash2.sha=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"
#!/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.shchmod +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 新...