我一直在使用這種技術來獲取正在運行的shell腳本的絕對物理路徑,然後在某處閱讀(我不記得在哪裏)。查找正在執行的Unix shell腳本的絕對路徑的有效/健壯模式?
cd $(dirname "$0") && ABSPATH=$(pwd) && cd - > /dev/null
這似乎像它應該很好地工作,無論是否腳本是從絕對或相對路徑調用,即script.sh
,./script.sh
,../script.sh
,../../../lib/script.sh
,/Users/../scripts/script.sh
,從另一個腳本中,等
事實上,這種技術看起來像是一個絕對可靠的任何相對路徑模式。
我知道很多這樣做的技術往往不適用於一個系統或另一個系統,出於某種原因。那麼,這種技術有沒有兼容性問題?它是否應該和幾乎所有的Unix操作系統和shell一起工作,還是存在一些潛在的問題?
的readlink上不存在有些系統和-e在OS X或某些其他BSD系統上不起作用,而且在某些系統上不是bash不可用? –
@Jake Petroules是的,我猜你正在尋找可移植性問題,而不是用''「」怪癖「 $ 0「'和符號鏈接,並且我剛剛添加了更多內容:P – dave
如果他們只想爲此設置一個環境變量那天,呃? –