<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-314  評論-209  文章-0  trackbacks-0

    bash shell 腳本執(zhí)行的方法有多種,本文作一個(gè)總結(jié),供大家學(xué)習(xí)參考。

        假設(shè)我們編寫好的shell腳本的文件名為hello.sh,文件位置在/data/shell目錄中并已有執(zhí)行權(quán)限。

    方法一:切換到shell腳本所在的目錄(此時(shí),稱為工作目錄)執(zhí)行shell腳本:
    cd /data/shell
    ./hello.sh
    ./的意思是說在當(dāng)前的工作目錄下執(zhí)行hello.sh。如果不加上./,bash可能會(huì)響應(yīng)找到不到hello.sh的錯(cuò)誤信息。因?yàn)槟壳暗墓ぷ髂夸洠?data/shell)可能不在執(zhí)行程序默認(rèn)的搜索路徑之列,也就是說,不在環(huán)境變量PASH的內(nèi)容之中。查看PATH的內(nèi)容可用 echo $PASH 命令。現(xiàn)在的/data/shell就不在環(huán)境變量PASH中的,所以必須加上./才可執(zhí)行。

    方法二:以絕對路徑的方式去執(zhí)行bash shell腳本:
    /data/shell/hello.sh

    方法三:直接使用bash 或sh 來執(zhí)行bash shell腳本:
    cd /data/shell

    bash hello.sh

    cd /data/shell

    sh hello.sh
        注意,若是以方法三的方式來執(zhí)行,那么,可以不必事先設(shè)定shell的執(zhí)行權(quán)限,甚至都不用寫shell文件中的第一行(指定bash路徑)。因?yàn)榉椒ㄈ菍ello.sh作為參數(shù)傳給sh(bash)命令來執(zhí)行的。這時(shí)不是hello.sh自己來執(zhí)行,而是被人家調(diào)用執(zhí)行,所以不要執(zhí)行權(quán)限。那么不用指定bash路徑自然也好理解了啊,呵呵……。

    方法四:在當(dāng)前的shell環(huán)境中執(zhí)行bash shell腳本:
    cd /data/shell

    . hello.sh

    cd /data/shell

    source hello.sh
        前三種方法執(zhí)行shell腳本時(shí)都是在當(dāng)前shell(稱為父shell)開啟一個(gè)子shell環(huán)境,此shell腳本就在這個(gè)子shell環(huán)境中執(zhí)行。shell腳本執(zhí)行完后子shell環(huán)境隨即關(guān)閉,然后又回到父shell中。而方法四則是在當(dāng)前shell中執(zhí)行的。

    假設(shè)shell腳本文件為hello.sh
    放在/root目錄下。

    下面介紹幾種在終端執(zhí)行shell腳本的方法:

    復(fù)制代碼代碼如下:
    [root@localhost home]# cd /root/
    [root@localhost ~]#vim hello.sh
    #!  /bin/bash
    cd /tmp
    echo "hello guys!"
    echo "welcome to my Blog:linuxboy.org!"

    1.切換到shell腳本所在的目錄,執(zhí)行:

    復(fù)制代碼代碼如下:
    [root@localhost ~]# ./hello.sh
    -bash: ./ hello.sh: 權(quán)限不夠

    2.以絕對路徑的方式執(zhí)行:

    復(fù)制代碼代碼如下:
    [root@localhost ~]# /root/Desktop/hello.sh
    -bash: /root/Desktop/ hello.sh: 權(quán)限不夠

    3.直接用bash或sh執(zhí)行:

    復(fù)制代碼代碼如下:
    [root@localhost ~]# bash hello.sh
    hello guys!
    welcome to my Blog:linuxboy.org!
    [root@localhost ~]# pwd
    /root
     
    [root@localhost ~]# sh hello.sh
    hello guys!
    welcome to my Blog:linuxboy.org!
    [root@localhost ~]# pwd
    /root

       注意:用以上三種方法執(zhí)行shell腳本,現(xiàn)行的shell會(huì)開啟一個(gè)子shell環(huán)境,去執(zhí)行shell腳本,前兩種必須要有執(zhí)行權(quán)限才能夠執(zhí)行。也可以讓shell腳本在現(xiàn)行的shell中執(zhí)行:

    4.現(xiàn)行的shell中執(zhí)行

    復(fù)制代碼代碼如下:
    [root@localhost ~]# . hello.sh
    hello guys!
    welcome to my Blog:linuxboy.org!
    [root@localhost tmp]# pwd
    /tmp 
     
    [root@localhost ~]# source hello.sh
    hello guys!
    welcome to my Blog:linuxboy.org!
    [root@localhost tmp]# pwd
    /tmp

        對于第4種不會(huì)創(chuàng)建子進(jìn)程,而是在父進(jìn)程中直接執(zhí)行。
        上面的差異是因?yàn)樽舆M(jìn)程不能改變父進(jìn)程的執(zhí)行環(huán)境,所以CD(內(nèi)建命令,只有內(nèi)建命令才可以改變shell 的執(zhí)行環(huán)境)沒有成功,但是第4種沒有子進(jìn)程,所以CD成功。

    posted on 2015-12-02 10:33 xzc 閱讀(390) 評論(0)  編輯  收藏 所屬分類: linux/unix
    主站蜘蛛池模板: 亚洲av午夜精品无码专区| 亚洲热线99精品视频| 精品亚洲成AV人在线观看| 特级毛片aaaa免费观看| 国产在线19禁免费观看| 亚洲国产成人精品激情| 免费无遮挡无遮羞在线看| 色吊丝永久在线观看最新免费| 77777午夜亚洲| 国产成人免费一区二区三区| 亚洲国产精品ⅴa在线观看| 在线免费视频一区| 久久久久无码精品亚洲日韩| 免费国产在线视频| 亚洲精品综合一二三区在线| 在线人成精品免费视频| 亚洲成人午夜电影| 国产精品免费久久| 看全色黄大色大片免费久久| 亚洲aⅴ无码专区在线观看春色 | 亚洲毛片无码专区亚洲乱| 草久免费在线观看网站| 国产午夜亚洲不卡| 国内永久免费crm系统z在线| 99久久精品国产亚洲| 97无码免费人妻超级碰碰碰碰| 直接进入免费看黄的网站| 亚洲人成人网站色www| 亚洲电影在线免费观看| 亚洲国产精品网站在线播放| 国产亚洲日韩一区二区三区| 亚洲av成人一区二区三区观看在线| 免费少妇a级毛片人成网| 激情小说亚洲图片| 亚洲一区二区三区在线观看精品中文 | 亚洲精品国产成人影院| 香港a毛片免费观看| 亚洲A∨精品一区二区三区下载| 日日噜噜噜噜夜夜爽亚洲精品| 麻豆国产精品免费视频| 亚洲一区中文字幕久久|