可以運行此腳本的兩種方式:當用戶打開pkg
文件並通過正常的GUI設置,或者當管理員(或精明的用戶)運行sudo installer -pkg /path/to/Installer.pkg -target /
時。對於第二個,我想知道腳本何時在這種模式下運行,這樣我可以做出更多管理友好的決定,例如不打開另一個GUI。 如何知道我的pkg
何時通過命令行安裝?當我的pkg運行它的安裝後腳本時,我怎麼知道這是怎麼發生的?
我希望有一些環境變量或類似的東西。
可以運行此腳本的兩種方式:當用戶打開pkg
文件並通過正常的GUI設置,或者當管理員(或精明的用戶)運行sudo installer -pkg /path/to/Installer.pkg -target /
時。對於第二個,我想知道腳本何時在這種模式下運行,這樣我可以做出更多管理友好的決定,例如不打開另一個GUI。 如何知道我的pkg
何時通過命令行安裝?當我的pkg運行它的安裝後腳本時,我怎麼知道這是怎麼發生的?
我希望有一些環境變量或類似的東西。
,因爲這是由installer
命令運行時,COMMAND_LINE_INSTALL
環境變量設置爲1
。正常打開pkg
時,該變量根本沒有設置。
所以:
if [ $COMMAND_LINE_INSTALL ]; then
# Do stuff for CLI land
else
# Do stuff for GUI land
fi
通過sudo運行腳本將更改某些變量的值並添加其他變量。您的腳本可以檢查這些變量(或它們的值)的存在,以確定安裝程序是否通過sudo運行。
值將得到更新:
HOME
LOGNAME
MAIL
將被置值:
SUDO_COMMAND
- 已通過須藤SUDO_GID
運行命令 - 跑須藤SUDO_USER
用戶的UID - - 跑須藤SUDO_UID
用戶的GID的用戶的用戶名的是跑sudo我的建議是檢查是否存在SUDO_COMMAND
環境變量;它不太可能設置爲非sudo安裝,並且將設置爲基於sudo的安裝。
這是真實的*如果操作系統提供的工具在運行前後腳本之前不會清理環境。這肯定不總是正確的 - 例如,RPM試圖防止軟件包的前置和後置腳本的行爲被本地環境修改。 –
這應被標記與操作系統或發行爲其相關的包裝形式和工具鏈正在使用中。 (如pkg-file標籤所示,多個操作系統使用該擴展名)。 –
@CharlesDuffy done –