2017-08-14 82 views
1

可以運行此腳本的兩種方式:當用戶打開pkg文件並通過正常的GUI設置,或者當管理員(或精明的用戶)運行sudo installer -pkg /path/to/Installer.pkg -target /時。對於第二個,我想知道腳本何時在這種模式下運行,這樣我可以做出更多管理友好的決定,例如不打開另一個GUI。 如何知道我的pkg何時通過命令行安裝?當我的pkg運行它的安裝後腳本時,我怎麼知道這是怎麼發生的?

我希望有一些環境變量或類似的東西。

+0

這應被標記與操作系統或發行爲其相關的包裝形式和工具鏈正在使用中。 (如pkg-file標籤所示,多個操作系統使用該擴展名)。 –

+0

@CharlesDuffy done –

回答

1

,因爲這是由installer命令運行時,COMMAND_LINE_INSTALL環境變量設置爲1。正常打開pkg時,該變量根本沒有設置。

所以:

if [ $COMMAND_LINE_INSTALL ]; then 
    # Do stuff for CLI land 
else 
    # Do stuff for GUI land 
fi 
1

通過sudo運行腳本將更改某些變量的值並添加其他變量。您的腳本可以檢查這些變量(或它們的值)的存在,以確定安裝程序是否通過sudo運行。

值將得到更新:

  • HOME
  • LOGNAME
  • MAIL將被置

值:

  • SUDO_COMMAND - 已通過須藤
  • SUDO_GID運行命令 - 跑須藤
  • SUDO_USER用戶的UID - - 跑須藤
  • SUDO_UID用戶的GID的用戶的用戶名的是跑sudo

我的建議是檢查是否存在SUDO_COMMAND環境變量;它不太可能設置爲非sudo安裝,並且將設置爲基於sudo的安裝。

參考:sudo 1.8.20 manual - ENVIRONMENT section

+0

這是真實的*如果操作系統提供的工具在運行前後腳本之前不會清理環境。這肯定不總是正確的 - 例如,RPM試圖防止軟件包的前置和後置腳本的行爲被本地環境修改。 –

相關問題