fix/scan-config-jsc-home-default-fallback
develop
scan-config.sh
expand()
$JSC_HOME/...
JSC_HOME
$JSC_HOME/*
model-tags.tsv
~/.jsc
ok
: "${JSC_HOME:=$HOME/.jsc}"
unset JSC_HOME
export JSC_HOME=/root/.jsc
$JSC_HOME/model-tags.tsv
No dependencies set.
The note is not visible to the blocked user.
摘要
scan-config.sh的expand()展開$JSC_HOME/...這類設定值時,若使用者尚未設定JSC_HOME環境變數,展開結果會是空字串,導致$JSC_HOME/*開頭的設定列(例如model-tags.tsv)被誤判為缺失或未設定;此次修正在展開子 shell 內補上文件記載的預設值~/.jsc,讓判定結果與實際生效路徑一致。變更內容
expand()展開變數時,只在子 shell 內補上JSC_HOME的預設值~/.jsc,讓$JSC_HOME/*開頭的設定列在未設環境變數時也能正確展開路徑並判定為ok。設計重點
expand()內部的子 shell 用: "${JSC_HOME:=$HOME/.jsc}"賦值,不外流到主流程、不全域設定JSC_HOME;這樣才不會連帶影響JSC_HOME這一列自己的檢查邏輯(該列仍要能正確回報「未設定,使用預設值」的狀態),只讓其他引用$JSC_HOME/...的設定列拿到正確的展開路徑。測試結果
unset JSC_HOME與export JSC_HOME=/root/.jsc兩種情況下執行 scan-config.sh 的 global 掃描,兩者輸出的$JSC_HOME/model-tags.tsv判定結果一致,皆為ok。JSC_HOME這一列自身的判定邏輯不受影響,在未設環境變數時仍正確回報為預設值狀態。前置 Push Request