我的一个目标是外部构建工具,它使用defaults命令读取属性列表。
当bot运行该工具时,defaults命令无法找到指定的默认值:
defaults read /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/version CFBundleShortVersionString
> The domain/default pair of (/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/version, CFBundleShortVersionString) does not exist
从普通用户的帐户运行相同的命令可以正常工作:
defaults read /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/version CFBundleShortVersionString
> 7.1
但由于某种原因,它对_teamsserver用户不起作用:
sudo -u _teamsserver defaults read /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/version CFBundleShortVersionString
> The domain/default pair of (/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/version, CFBundleShortVersionString) does not exist
......这就是机器人无法构建的原因。
知道为什么这不起作用?
感谢。
答案 0 :(得分:0)
尝试使用PlistBuddy:
/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/version.plist
请注意,从10.9开始,您不应该使用PlistBuddy来修改首选项文件。 Apple添加了一个缓存系统来提高用户首选项的性能,并且不会看到直接对首选项文件进行的更改。在这种情况下,请使用“defaults”命令,该命令使用适当的API进行首选项更改。我的猜测是,在尝试使用带有sudo的“defaults”命令来访问通用plist时,首选项缓存系统也可能会造成麻烦。