今天在shell中寫了乙個cd目錄,當使用./執行shell指令碼,當指令碼執行結束之後發現還在當前的路徑,路徑並未發生改變。下面說一下使用. 和./執行的不同效果。
首先寫乙個簡單的測試sh;
#!/bin/sh
echo "before dir: `pwd`"
cd /home
echo "after dir: `pwd`"
下面看一下使用./shellname.sh的執行現象:
在執行後目錄又回到了改變之前的路徑
再看一下使用. shellname.sh的執行現象:
可以明顯的看到使用上面這種方式執行之後路徑發生改變,達到了預期的效果。
在使用./執行指令碼時會在開啟乙個新的子shell來執行指令碼的內容,指令碼中的內容也只在子shell的生命週期內生效,當退出之後,有回到了當前shell的環境。而在使用. 執行時不會去新建乙個子shell來執行指令碼內容,所以對當前shell生效。
java執行時異常和非執行時異常的區別
建議使用執行時異常和編譯時異常叫法,便於區分和理解 非執行時異常是什麼異常?很懵逼 編譯時異常 程式沒有通過編譯器的編譯,必須處理掉這個異常程式才能正常執行,比如檔案路徑找不到異常,類找不到異常,io異常,必須用try catch或是throwable處理掉才能編譯通過 可以理解為一種特殊的語法錯誤...
VC 獲取程式執行時間和系統執行時間
cstring str,str1 獲取程式執行時間 long t1 gettickcount 程式段開始前取得系統執行時間 ms sleep 500 afxmessagebox do something.long t2 gettickcount 程式段結束後取得系統執行時間 ms str.forma...
計算shell指令碼的執行時間
有時候可能需要計算 shell 指令碼 執行了多久,怎麼統計這個指令碼 執行多長時間呢?直接看 bin bash start time date date 0 days ago y m d h m s this is your shell script sleep 18 finish time da...