![](/img/trans.png)
[英]When calling script from another script in bash shell, how do I pass prefixed arguments to the called script from calling script?
[英]How to read the current folder from a script when it's called with source (same shell) or bash (subshell)?
這是一個很難的問題,因為我研究了幾個小時但找不到可行的解決方案,所以我結合了一些我找到的解決方案,結果如下:
"$( cd "$( dirname "${BASH_SOURCE[0]}" )" && dirname -- "$(readlink -f -- "$0")" )"
如果有人有更簡單的,請分享,否則,享受!
我不認為 bash 的解決方案適用於任何情況(例如通過鏈接獲取文件時),但這種方法可能在大多數情況下都有效:
${BASH_SOURCE[0]}
包含腳本的名稱,包括 PATH 組件,以它被調用的方式。 如果它是通過$PATH
搜索調用的,則它包含相應的 PATH。 因此, dirname "${BASH_SOURCE[0]}"
將是腳本所在的目錄(相對路徑或絕對路徑)。 因此, readlink -f -- $(dirname "${BASH_SOURCE[0]}")
將 output 該目錄的絕對路徑。 因此,在同一目錄中找到other_script
將是:
source "$(readlink -f -- $(dirname "${BASH_SOURCE[0]}"))/other_script" # bash
您也為zsh標記了您的問題。 在 Zsh 中,事情要簡單一些。 您在$0
中找到您的腳本(加上目錄部分)。 因此返回目錄的絕對路徑$0:A
,給你
source $0:A/other_script # zsh
當然,如果您只需要此信息來獲取其他腳本,則不需要獲取other_script
的絕對路徑。 相對路徑也可以。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.