fix/schedule-path-only-cli-dirs
develop
PATH
command too long
tools/schedule.sh
command -v
references/behaviors.md
去重與去死路徑都不夠。這台機器的 PATH 有 61 段,光是還活著又不重複的就 38 段。
這一條要解決的問題很窄:cron 只給 /usr/bin 與 /bin,而偵測 CLI 那一支靠 PATH 找執行檔,找不到就回結束碼 0 加一份空清單——看起來像「這台機器沒裝 CLI」。
/usr/bin
/bin
巡檢要跑的指令本身走的是字面絕對路徑,不靠這一條。 靠它的只有那幾支腳本自己呼叫的外部程式。
收尾接上 cron 本來就會給的兩段,免得只剩自訂目錄而找不到系統工具。
有些 CLI 裝在會過期的目錄底下——這台機器上就有一支落在帶行程編號的多殼層目錄裡,那種路徑下一次開機就不在了。
這裡不特別過濾。 過濾要認得每一種安裝方式,而那份名單會過期得比路徑還快——今天已經看過好幾次靜態名單怎麼壞的。重跑一次 install 就重新拍一份,而條目本來就是安裝當下的快照。
install
不是靠測試,是靠真的裝一次。乾跑不會踩到——--dry-run 不呼叫 crontab,長度上限是 crontab 自己檢查的。
--dry-run
crontab
上一版的測試全過,因為每一項都繞過了會失敗的那一步。 這一次真的裝了,才知道裝不起來。
claude
codex
copilot
antigravity
kiro
service=running
current_links=ok
lint-scripts.sh
check-behaviors.sh
ste100-lint.sh
上一版把整條 PATH 快照進條目,實測直接裝不起來:crontab 一行有長度上限, 回的是 command too long,結束碼 4。這台機器的 PATH 是 2160 字元,去重又去掉 不存在的那幾段之後還有 1332 字元,仍然超過。 改成只帶放得下 CLI 執行檔的那幾個目錄,這台機器實測兩個、合起來 70 字元, 整行降到 685 字元。夠用的理由是這一條要解決的問題很窄:cron 只給 /usr/bin 與 /bin,而偵測 CLI 那一支靠 PATH 找執行檔,找不到就回結束碼 0 加一份空清單 ——看起來像「這台機器沒裝 CLI」。巡檢要跑的指令本身走字面絕對路徑,不靠它。 收尾接上 cron 本來就會給的那兩段,免得只剩自訂目錄而找不到系統工具。 一個代價寫進註解:有些 CLI 裝在會過期的目錄底下,例如帶行程編號的多殼層 目錄,那種路徑下一次開機就不在了。不特別過濾——過濾要認得每一種安裝方式, 那份名單會過期得比路徑還快。重跑一次 install 就重新拍一份,而條目本來就是 安裝當下的快照。 實測:拿條目會帶的那條 PATH 在清空環境裡跑,五支 CLI 全解得出來;真的裝一次 回結束碼 0,服務在跑,連結檢查通過。 三份 manifest 版號 0.2.5 升到 0.2.6。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
No dependencies set.
The note is not visible to the blocked user.
摘要
PATH快照進排程條目,實測直接裝不起來——crontab 一行有長度上限,回的是command too long、結束碼 4。這張改成只帶放得下 CLI 執行檔的那幾個目錄。變更內容
tools/schedule.shPATH不再走通用快照那條路,改由一支小函式從command -v推出 CLI 執行檔所在的目錄references/behaviors.md三個數字
PATH照抄去重與去死路徑都不夠。這台機器的
PATH有 61 段,光是還活著又不重複的就 38 段。為什麼只帶那幾個目錄就夠
這一條要解決的問題很窄:cron 只給
/usr/bin與/bin,而偵測 CLI 那一支靠PATH找執行檔,找不到就回結束碼 0 加一份空清單——看起來像「這台機器沒裝 CLI」。巡檢要跑的指令本身走的是字面絕對路徑,不靠這一條。 靠它的只有那幾支腳本自己呼叫的外部程式。
收尾接上 cron 本來就會給的兩段,免得只剩自訂目錄而找不到系統工具。
一個代價,寫進註解
有些 CLI 裝在會過期的目錄底下——這台機器上就有一支落在帶行程編號的多殼層目錄裡,那種路徑下一次開機就不在了。
這裡不特別過濾。 過濾要認得每一種安裝方式,而那份名單會過期得比路徑還快——今天已經看過好幾次靜態名單怎麼壞的。重跑一次
install就重新拍一份,而條目本來就是安裝當下的快照。這個坑是怎麼發現的
不是靠測試,是靠真的裝一次。乾跑不會踩到——
--dry-run不呼叫crontab,長度上限是crontab自己檢查的。上一版的測試全過,因為每一項都繞過了會失敗的那一步。 這一次真的裝了,才知道裝不起來。
測試結果
PATH在清空環境裡跑,五支 CLI 全解得出來:claude、codex、copilot、antigravity、kiro。service=running,current_links=ok,自我檢核零誤報。lint-scripts.sh、check-behaviors.sh、ste100-lint.sh三支都回結束碼 0。前置 Push Request