亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請教下如果不用絕對路徑的情況下,這種問題怎么解決呢?

請教下如果不用絕對路徑的情況下,這種問題怎么解決呢?

慕容708150 2023-04-16 13:09:40
我在開發一個bash的腳本工具,需要用到相對目錄。問題是腳本是放在 /usr/local/bin 加入PATH里的,這樣我可以在任何地方直接運行,但悲催的是運行過程中,這個相對目錄就出問題了。例如:/usr/local/bin/cmd.sh#!/bin/bashmkdir ../tmp/imgs這個命令我本意是在 mkdir /usr/local/tmp/imgs但如果我在家目錄運行~ # sudo cmd.sh他實際上是去創建 /home/tmp/imgs 的不用絕對路徑的情況下,這種問題怎么解決呢?因為這個工具是有多個腳本和配置組成的,用絕對路徑會有很麻煩的問題。
查看完整描述

2 回答

?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

如果需要處理軟鏈接的情況,可是使用如下函數

_current_path() {
    SOURCE=${BASH_SOURCE[0]}    DIR=$( dirname "$SOURCE" )    while [ -h "$SOURCE" ]    do
        SOURCE=$(readlink "$SOURCE")
        [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
        DIR=$( cd -P "$( dirname "$SOURCE"  )" && pwd )
    done    DIR=$( cd -P "$( dirname "$SOURCE" )" && pwd )    echo $DIR}

調用

cd $(_current_path)


查看完整回答
反對 回復 2023-04-20
?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

如果僅僅是到腳本所在的目錄,下面的就可以:

cd $(dirname $0)

dirname $0是獲取腳本所在的目錄。

如果要獲取執行腳本所在目錄的絕對路徑,可以用下面的方法:

CUR_DIR=$(cd `dirname $0` && pwd -P)

pwd -P可以獲取當前目錄的絕對路徑,并且如果當前目錄只是一個軟鏈接,它所顯示得是鏈接目標的絕對路徑。


查看完整回答
反對 回復 2023-04-20
  • 2 回答
  • 0 關注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號