Jquery中文網 mm6666com单双中特 www.wvbtf.icu
Jquery中文網 >  腳本編程  >  shell  >  正文 bash shell獲取當前正執行腳本的絕對路徑

财富半单双中特:bash shell獲取當前正執行腳本的絕對路徑

發布時間:2014-12-17   編輯:mm6666com单双中特 www.wvbtf.icu
本文介紹了bash shell中獲取當前正執行腳本的絕對路徑的方法,有需要的朋友參考下。

mm6666com单双中特 www.wvbtf.icu 點評:在bash編程中,是可以在腳本中取得當前正在執行腳本的絕對路徑的,不過這個會一個誤區,就是使用pwd命令,另外還有說用$0,這也是不準確。

這里分享一種正確的寫法,大家做個參考。

bash腳本
如題,一般我們寫Shell腳本的時候,都傾向使用絕對路徑,這樣無論腳本在什么目錄執行,都應該起到相同的效果,但是有些時候,我們設計一個軟件包中的工具腳本,可能使用相對路徑更加靈活一點,因為你不知道用戶會在哪個目錄執行你的程序,就有了本文的題目。
  常見的一種誤區,是使用 pwd 命 令,該命令的作用是“print name of current/working directory”,這才是此命令的真實含義,當前的工作目錄,這里沒有任何意思說明,這個目錄就是腳本存放的目錄。所以,這是不對的。你可以試 試 bash shell/a.sh,a.sh 內容是 pwd,你會發現,顯示的是執行命令的路徑 /home/june,并不是 a.sh 所在路徑:/home/june/shell/a.sh
 
  另一個誤人子弟的答案,是 $0,這個也是不對的,這個$0是Bash環境下的特殊變量,其真實含義是:
   Expands to the name of the shell or shell script. This is set at shell initialization.  If bash is invoked with a file of commands, $0 is set to the name of that file. If bash is started with the -c option, then $0 is set to the first argument after the string to be executed, if one is present. Otherwise, it is set to the file name used to invoke bash, as given by argument zero.
   這個$0有可能是好幾種值,跟調用的方式有關系:
使用一個文件調用bash,那$0的值,是那個文件的名字(沒說是絕對路徑噢)
使用-c選項啟動bash的話,真正執行的命令會從一個字符串中讀取,字符串后面如果還有別的參數的話,使用從$0開始的特殊變量引用(跟路徑無關了)
除此以外,$0會被設置成調用bash的那個文件的名字(沒說是絕對路徑)

正確答案:
 

復制代碼 代碼示例:
[email protected] 192.168.1.100 07:43:43 ~ >
cat shell/a.sh
#!/bin/bash
echo '$0: '$0
echo "pwd: "`pwd`
echo "scriptPath1: "$(cd `dirname $0`; pwd)
echo "scriptPath2: "$(dirname $(readlink -f $0))
[email protected] 192.168.1.100 07:43:46 ~ >
pwd
/home/june
[email protected] 192.168.1.100 07:43:48 ~ >
bash shell/a.sh
$0: shell/a.sh
pwd: /home/june
scriptPath1: /home/june/shell
scriptPath2: /home/june/shell
[email protected] 192.168.1.100 07:43:54 ~ >
 

解釋:
scriptPath1 :
 
dirname $0,取得當前執行的腳本文件的父目錄
cd `dirname $0`,進入這個目錄(切換當前工作目錄)
pwd,顯示當前工作目錄(cd執行后的)
   由此,我們獲得了當前正在執行的腳本的存放路徑。

您可能感興趣的文章:
bash shell獲取當前正執行腳本的絕對路徑
bash shell腳本執行的幾種方法
獲取shell腳本所在絕對路徑操作方法介紹
SHELL編程:寫一首情詩,送給親愛的你
export為shell腳本添加指定環境變量的方法
深入理解php中require/include的順序
通過__FILE__靈活獲取文件路徑的方法
shell編程中的幾個小技巧
取得當前shell目錄的方法
有關php的超級全局變量數組

關鍵詞: shell  絕對路徑   
[關閉]
欢乐生肖开奖 开元棋牌规律 七乐彩近30期走势图 重庆时时彩 历史记录 百家了公式打法对 足球比分 篮球比分直播足彩网 有重庆时时彩预测龙虎 北京pk10历史开奖记录 大神娱乐最新版下载 二八杠有什么手法吗 抢庄牌九网站 冠通游戏 七星彩预测qq群 重庆时时彩龙虎被骗 河北时时现场开奖