許多shell開發人員花費很多精力開發可移植代碼,避免例如Bashisms,並且我想知道這種增加的努力是否真的有助於符合軟件需求。清單:何時編寫符合可移植性/符合POSIX標準的shell代碼?
我想知道是否可以給出一個簡單的需要便攜式代碼的條件清單。讓我們假設
- ,使用替代
$BETTER_LANGUAGE
外殼實際上是有意義的, - 每個殼對所有目標系統的版本相同(即外殼的版本差異不便攜的一部分),
- 標籤的可讀性/可變性目前尚未考慮(便攜式代碼可能比例如最新的Bash RegEx功能更易於閱讀/理解)。
這是已經到了我的腦海裏至今:
- 代碼實際上是(或可能在未來),並有意在不同的殼(執行例如,因爲目標平臺被限制在不同的殼,或者因爲代碼將來可能需要在更快的shell中執行,比如
dash
),並且提供不同的實現方式是不可行的。 - 代碼是一個框架的一部分,旨在爲便攜式本身
- 代碼是源包,必須在各種平臺可建的部分
- 軟件分發作爲一個包,適用於各種目標系統並且開發人員不想引入對特定外殼的依賴關係
是否有任何我沒有想到的明顯條件,或者它們可能會更普遍地表達? POSIX合規性是否需要與普通可移植性不同的清單?是否有任何文獻或其他來源可以推薦?