【问题标题】:Mac OS X 10.10 Yosemite Bash script defaults read generates The domain/default pair of does not exist errorMac OS X 10.10 Yosemite Bash 脚本默认读取生成域/默认对不存在错误
【发布时间】:2016-04-18 23:03:20
【问题描述】:

我正在尝试在 Mac OS X 10.10 Yosemite 上检查 Safari 中的默认主页。

在我的原版系统上,主页实际上并没有设置,所以首先我使用命令强制设置主页:

defaults write com.apple.Safari.plist HomePage www.google.co.uk

现在我可以使用以下命令读取主页设置:

defaults read com.apple.Safari.plist HomePage

www.google.co.uk

是输出。

我需要使用由 Microsoft SCCM 交付和执行的 Bash 脚本为控制台用户执行此操作。 Microsoft SCCM 客户端在机器的系统帐户下运行,因此运行上面的默认读取命令不会报告登录用户的设置。为了解决这个问题,我使用的命令首先确定登录用户的用户 ID,然后使用登录用户(如果适用)Safari plist 文件实例的完整路径读取主页值。

如果我手动执行前四行,预期的主页存储在变量 myuserhompage 中并按预期显示。

myuser=$(stat -f%Su /dev/console)
myuserhompage="$(defaults read /users/$myuser/library/preferences/com.apple.Safari HomePage)"
if [[ ${myuserhompage} == "www.google.co.uk" ]] ;
then
  echo "homepage_set"
  exit 0
else
  echo "homepage_not_set"
  exit 1
fi

但是,当我在 Bash 脚本中运行相同的代码行时,我看到域/默认对不存在错误。

【问题讨论】:

  • 您是否尝试过直接从命令行和脚本执行defaults read /users/$myuser/Library/Preferences/com.apple.Safari.plist(替换您的用户ID)并比较结果?
  • 我重新输入了代码并且发现它已经工作了。这让我想到了另一个问题,我已经解决了这个问题,并且刚刚用修正案更新了这个问题。一定存在特殊字符或字符翻译问题,因为重新键入代码时,无论是命令行还是脚本都可以正常工作。
  • 这通常是行尾问题。在 Windows 中是 \r\n,在 unix 中只有 \n
  • 感谢 derlarsschneider

标签: macos bash safari


【解决方案1】:

通过直接在 OS X VM 中重新键入文本,而不是依赖于 Windows 主机的复制/粘贴,我现在似乎可以在终端命令行和脚本命令之间获得一致性。这解决了我的问题。它还突出了我已相应更新的结果评估的问题。谢谢。

【讨论】:

    猜你喜欢
    • 2011-05-02
    • 2020-06-03
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 2011-07-18
    • 2014-12-24
    相关资源
    最近更新 更多