A. 如何用絕對路徑執行自己寫的linux腳本,而不用sh script形式
關鍵要看報什麼錯。錯誤信息貼出來。
你的script放在什麼目錄,ls -la 一下給我們看看。
你的script,執行許可權是有的,那就應該可以執行。
即使腳本的第一行沒有類似!#/bin/sh,就會以你當前用戶的shell去執行。
B. linux 中如何執行腳本
ash shell 腳本的方法有多種,現在作個小結。假設我們編寫好的shell腳本的文件名為hello.sh,文件位置在/data/shell目錄中並已有執行許可權。
方法一:切換到shell腳本所在的目錄(此時,稱為工作目錄)執行shell腳本:
cd /data/shell
./hello.sh
./的意思是說在當前的工作目錄下執行hello.sh。如果不加上./,bash可能會響應找到不到hello.sh的錯誤信息。因為目前的工作目錄(/data/shell)可能不在執行程序默認的搜索路徑之列,也就是說,不在環境變數PASH的內容之中。查看PATH的內容可用 echo $PASH 命令。現在的/data/shell就不在環境變數PASH中的,所以必須加上./才可執行。
方法二:以絕對路徑的方式去執行bash shell腳本:
/data/shell/hello.sh
方法三:直接使用bash 或sh 來執行bash shell腳本:
cd /data/shell
bash hello.sh
或
cd /data/shell
sh hello.sh
注意,若是以方法三的方式來執行,那麼,可以不必事先設定shell的執行許可權,甚至都不用寫shell文件中的第一行(指定bash路徑)。因為方法三是將hello.sh作為參數傳給sh(bash)命令來執行的。這時不是hello.sh自己來執行,而是被人家調用執行,所以不要執行許可權。那麼不用指定bash路徑自然也好理解了啊,呵呵……。
方法四:在當前的shell環境中執行bash shell腳本:
cd /data/shell
. hello.sh
或
cd /data/shell
source hello.sh
前三種方法執行shell腳本時都是在當前shell(稱為父shell)開啟一個子shell環境,此shell腳本就在這個子shell環境中執行。shell腳本執行完後子shell環境隨即關閉,然後又回到父shell中。而方法四則是在當前shell中執行的。
C. 如何執行shell腳本其中一條命令
方法一:切換到shell腳本所在的目錄(此時,稱為工作目錄)執行shell腳本:
復制代碼代碼如下:
cd /data/shell
./hello.sh
./的意思是說在當前的工作目錄下執行hello.sh。如果不加上./,bash可能會響應找到不到hello.sh的錯誤信息。因為目前的工作目錄(/data/shell)可能不在執行程序默認的搜索路徑之列,也就是說,不在環境變數PASH的內容之中。查看PATH的內容可用 echo $PASH 命令。現在的/data/shell就不在環境變數PASH中的,所以必須加上./才可執行。
方法二:以絕對路徑的方式去執行bash shell腳本:
復制代碼代碼如下:
/data/shell/hello.sh
方法三:直接使用bash 或sh 來執行bash shell腳本:
復制代碼代碼如下:
cd /data/shell
bash hello.sh
或
復制代碼代碼如下:
cd /data/shell
sh hello.sh
注意,若是以方法三的方式來執行,那麼,可以不必事先設定shell的執行許可權,甚至都不用寫shell文件中的第一行(指定bash路徑)。因為方法三是將hello.sh作為參數傳給sh(bash)命令來執行的。這時不是hello.sh自己來執行,而是被人家調用執行,所以不要執行許可權。那麼不用指定bash路徑自然也好理解了啊,呵呵……。
方法四:在當前的shell環境中執行bash shell腳本:
復制代碼代碼如下:
cd /data/shell
. hello.sh
或
復制代碼代碼如下:
cd /data/shell
source hello.sh
前三種方法執行shell腳本時都是在當前shell(稱為父shell)開啟一個子shell環境,此shell腳本就在這個子shell環境中執行。shell腳本執行完後子shell環境隨即關閉,然後又回到父shell中。而方法四則是在當前shell中執行的。
D. shell腳本如何實現不用手動輸入命令
#/bin/bash
cd /usr/
把上面的保存為一個文件如a.sh,然後給予執行許可權
執行 ./a.sh 就好了
E. SHELL腳本運行的幾種方法以及區別
#2 sh/bash ./a.sh 這種情況不需要腳本具有執行許可權 以上兩種執行方式都是在子shell中執行的,也就是說當前shell需要啟動另外一個shell,用來執行a.sh內的命令 #1 source ./a.sh #2 ../a.sh(注意前面的 . ) 以上兩種執行方式是在當前shell下執行,並不需要建立子shell source和 . 命令的作用:用來執行一個腳本 前兩種方式和後兩種方式的另外區別:如果你在一個腳本里export $KKK=111 ,如果你用./a.sh執行該腳本,執行完畢後,你運行 echo $KKK ,發現沒有值,如果你用source來執行 ,然後再echo ,就會發現KKK=111。因為調用./a.sh來執行shell是在一個子shell里運行的,所以執行後,結構並沒有反應到父shell里,但是source不同它就是在本shell中執行的,所以可以看到結果。 # 執行腳本時是在一個子shell環境運行的,腳本執行完後該子shell自動退出 # 一個shell中的系統環境變數只對該shell或者它的子shell有效,該shell結束時變數消失(並不能返回到父shell中) # 用export定義的變數會被復制到該shell的子shell中
F. 如何運行shell腳本
編寫好的shell腳本(如:test),可以採取兩種方式進行運行:
一、 $ sh test
一般不採用這種調用方式,尤其不採用「sh<test」的調用方式,因為這種方式將禁止shell讀取標准輸入。
也可以採用 $ ksh test
這種方式要求shell具有「可讀」的訪問許可權。
二、直接運行可執行的shell腳本之前,首先應使用下列chmod命令,把shell腳本文件設置為可執行的文件。
chmod 755 test(除文件屬主可寫之外,每個用戶均具有讀和可執行的訪問許可權)
chmod +rx test(同上)
chmod u+rx test(只有文件屬主具有讀和執行的訪問許可權)
按照上述要求設置shell腳本文件的訪問許可權後,可採用下列方式,直接運行shell腳本了。
1、test(如果命令檢索路徑包含當前目錄)
2、./test(如果命令減縮路徑不包含當前目錄)
*說明: sh test 方式調用一個shell叫蹦可能會禁止某些shell特定的擴展功能,因而可能引起腳本無法正確執行。
G. linux中如何設置能使一個腳本在任意目錄下都可直接運行,不要非到這個腳本所在目錄下運行
bash shell 腳本的方法有多種,現在作個小結。假設我們編寫好的shell腳本的文件名為hello.sh,文件位置在/data/shell目錄中並已有執行許可權。
一般來說,我都把這樣的東西放在/usr/local/bin目錄下,常用的系統這個都在path環境中
有些系統不把$home/bin放在path中,所以你在自己的bin目錄下放的東西在別的目錄下不見得可以執行。
H. linux 如何不斷地執行某個.sh文件
寫個腳本,循環調用你這個.sh文件就行了啊,比如:
[root@pbu1~/sources/hjx/sh]#moreshow.sh
#!/bin/bash
echo"HelloWorld!"
[root@pbu1~/sources/hjx/sh]#morerun_show.sh
#!/bin/bash
whiletrue
do
./show.sh
sleep2
done
[root@pbu1~/sources/hjx/sh]#./run_show.sh
HelloWorld!
HelloWorld!
HelloWorld!
截圖:
I. linux上如何實現運行一個腳本 使用bash或者sh可以正常運行 但是如果使用./運行 他就會終止運行
chmod -x a.sh
就是去掉可執行屬性就好,只能bash a.sh,不能./a.sh
抱歉手機屏小,沒看到前面有人答了。。。