sh文件介紹
.sh為Linux的腳本文件,我們可以通過.sh執(zhí)行一些命令,可以理解為windows的.bat批處理文件。
點(diǎn)命令
.命令和source是同一個(gè)命令,可以理解為source的縮寫,簡稱點(diǎn)命令。
sh、source和.命令執(zhí)行.sh文件的區(qū)別
假如有一個(gè)文件test.sh,腳本內(nèi)容如下
echo “step 1 sleeping”
sleep 200
echo “step 2 sleeping”
sleep 200
那么,現(xiàn)在按以下4種方式執(zhí)行:
1)./test.sh
2)sh test.sh
3). test.sh
4)source test.sh
他們有何區(qū)別?
1)第一種方式,是在當(dāng)前的shell執(zhí)行腳本本身,也就是說把test.sh當(dāng)成一個(gè)文件執(zhí)行,這時(shí)候我們需要擁有test.sh的運(yùn)行權(quán)限(x權(quán)限),而且當(dāng)我們在執(zhí)行此命令時(shí),有2個(gè)新進(jìn)程在運(yùn)行,一個(gè)是test.sh,一個(gè)是sleep,如果我們在執(zhí)行第一個(gè)sleep時(shí)按ctrl+c終止腳本,test.sh和sleep一起終止,并且第二個(gè)sleep不會執(zhí)行,因?yàn)檎麄(gè)test.sh運(yùn)行已經(jīng)終止。
刪除所有之前的自動(dòng)命令. autocmd filetype java source ~/.vim/files/java.vim autocmd filetype java source ~/.vim/files/jcommenter.vim 以上兩條命令讓我在打開 java 文件時(shí)才應(yīng)用后面提到的兩個(gè)配置文件. autocmd bufnewfile *.java 0r ~/.vim/files/skeletons/java.skel 以上這條命令讓我在新建 java 文件時(shí)自動(dòng)加入 java.skel 文件的內(nèi)容. autocmd bufnewfile *.java normal gnp 以上這條命令讓我在新建 java 文件時(shí)自動(dòng)運(yùn)行 gnp 命令, 這個(gè)命令進(jìn)行一些特殊化 處理, 比如將新 java 文件中的 __date__ 替換成今天的日期什么的.11. 常用腳本 在 vim.sf.net 你可以發(fā)現(xiàn)很多腳本(script), 這些腳本常常有讓你意想不到的作用.我常用的有: jcommenter.vim 自動(dòng)加入 javadoc 風(fēng)格。請注意,這里一定要有權(quán)限執(zhí)行該腳本,并且該腳本里的命令都要有權(quán)限執(zhí)行才可以,否則crontab任務(wù)會失效。3. 環(huán)境變量的問題:crontab執(zhí)行腳本的時(shí)候不會讀取用戶的環(huán)境變量等配置,所以可能很多命令不能使用導(dǎo)致腳本執(zhí)行失敗。
3)第三種方式,是在當(dāng)前shell執(zhí)行test.sh里面的命令,不需要執(zhí)行權(quán)限,有讀取權(quán)限(r權(quán)限)即可linux命令,在執(zhí)行此命令時(shí)linux命令,只有一個(gè)新進(jìn)程在運(yùn)行,就是sleep,如果在執(zhí)行第一個(gè)sleep時(shí)按ctrl+c終止,那么第二個(gè)sleep接著運(yùn)行,直到腳本所有命令執(zhí)行完。
4)第四種方式和第三種方式一致。