當前位置:首頁 » 編程軟體 » 獲取shell腳本路徑

獲取shell腳本路徑

發布時間: 2022-07-31 21:01:38

❶ 如何獲得sh或source執行的shell腳本位置

1) 支持從其他目錄執行,如 source xxx/yyy/test.sh
1) 支持 sh 和 source 執行
2) 支持路徑中有空格
3) 支持 zsh 跟 bash
#!/bin/sh
if [ "$0" = "bash" ]; then
cd "$(dirname "$BASH_SOURCE")"
CUR_FILE=$(pwd)/$(basename "$BASH_SOURCE")
CUR_DIR=$(dirname "$CUR_FILE")
cd - > /dev/null
else
echo "$0" | grep -q "$PWD"
if [ $? -eq 0 ]; then
CUR_FILE=$0
else
CUR_FILE=$(pwd)/$0
fi
CUR_DIR=$(dirname "$CUR_FILE")
fi
echo $CUR_DIR

❷ 如何獲得 sh 或 source 執行的shell 腳本位置

1) 支持從其他目錄執行,如 source xxx/yyy/test.sh
1) 支持 sh 和 source 執行
2) 支持路徑中有空格
3) 支持 zsh 跟 bash
#!/bin/sh
if [ "$0" = "bash" ]; then
cd "$(dirname "$BASH_SOURCE")"
CUR_FILE=$(pwd)/$(basename "$BASH_SOURCE")
CUR_DIR=$(dirname "$CUR_FILE")
cd - > /dev/null
else
echo "$0" | grep -q "$PWD"
if [ $? -eq 0 ]; then
CUR_FILE=$0
else
CUR_FILE=$(pwd)/$0
fi
CUR_DIR=$(dirname "$CUR_FILE")
fi
echo $CUR_DIR

linux shell腳本中如何獲取文件的絕對路徑readlink可以么

傳給函數的路徑是/root/file,如果這是函數的第一個參數,那麼函數中可以用
$1
獲取。
得到文件名file1和file2後,echo
"$1/file1"
就輸出/root/file/file1,echo
"$1/file2"
輸出/root/file/file2。

❹ shell編程中,如何獲取當前執行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的那個文件的名字(沒說是絕對路徑)

  • 下面對比下正確答案:

  • basepath=$(cd `dirname $0`; pwd)

  • 在此解釋下basepath:

  • dirname $0,取得當前執行的腳本文件的父目錄


  • cd `dirname $0`,進入這個目錄(切換當前工作目錄)


  • pwd,顯示當前工作目錄(cd執行後的)

  • 由此,我們獲得了當前正在執行的腳本的存放路徑。

❺ 安卓 怎麼獲取sh腳本目錄並cd到腳本目錄

1.修改啟動腳本init.rc在最後添加 #===============================add my shellscript service sysinit /system/xbin/busybox run-parts /system/etc/init.d oneshot 上面busybox工具路徑要根據自己的系統寫 2.在system/etc下創建init.d目錄,在此目錄下添加寫好的腳本去掉後綴.sh,添加可執行許可權 3.重啟ok

❻ shell獲得當前目錄名的幾種方法

1、我們先登錄第一個用戶,root。登錄後,echo $SHELL。

❼ shell腳本路徑問題

關於路徑,我的建議是用完整路徑,不要用./ ../ 之類的路徑。
##################################################
#!/bin/bash
#cat a.properties
FILE=/home/user/A/D/a.properties

read -p "enter your want to look:" ANSWER

if [ -n "$ANSWER ]
then
XX=`cat $FILE |grep $ANSWER`
echo "$XX"
else
echo "enter error!"
fi
##################################################
這個腳本的意思是,讓你輸入你需要查詢的內容,並且把內容顯示在屏幕上給你看,如果你輸入的內容是空的,就不給查詢,並且拋出enter error的錯誤提示。

❽ linux shell 問題怎麼知道shell腳本自己的路徑

用dirname命令和pwd命令(或讀取PWD變數)組合。先進入腳本所在目錄,讀出PWD值(這就是需要的東西),然後返回原來的位置[可選]。命令如下:
echo $(cd "$(dirname "$0")"; pwd)
這里的cd是在子shell中執行,所以不需要用額外的命令返回原位置了。

❾ 怎麼讓shell腳本獲得自己所在目錄名

1.使用絕對路徑執行的shell文件(如/home/xxx/binfile)
直接使用dirname $0即可
2.對於使用相對路徑執行的shell文件(如 ./xxx/binfile)
pwd與dirname結合使用;pwd獲得的是執行當前shell文件時,用戶所在的位置;dirname可以獲得相對於那個位置的偏移:
例如某shell文件所在的位置是/home/user_name/work2/SNS3_server_im/Developing/trunk/im_capp/src/notify_serv/shell文件名

1 #!/bin/sh
2 pwd
3 echo `dirname $0`
執行後輸出
/home/user_name/work2/SNS3_server_im/Developing/trunk/im_capp/src
./notify_serv

熱點內容
linux文件軟鏈接 發布:2025-02-08 22:35:48 瀏覽:773
iphone6s緩存怎麼清理 發布:2025-02-08 22:33:17 瀏覽:928
資料庫系統設計的步驟 發布:2025-02-08 22:11:19 瀏覽:44
processc語言 發布:2025-02-08 22:11:15 瀏覽:537
國產車配置為什麼這么便宜 發布:2025-02-08 22:09:52 瀏覽:481
伺服器為什麼需要專線 發布:2025-02-08 22:07:27 瀏覽:872
java正則表達式正則替換 發布:2025-02-08 22:01:04 瀏覽:506
伺服器不識別配置的ip地址 發布:2025-02-08 22:00:02 瀏覽:615
橙雲伺服器 發布:2025-02-08 21:59:48 瀏覽:438
ftp伺服器ip就是電腦ip嗎 發布:2025-02-08 21:51:42 瀏覽:475