我试图在bash中为我的dotfiles写一个无人参与的安装脚本,它在开始时要求sudo
一次并在整个过程中保持活着状态。不过,我在安装Homebrew时遇到了一些障碍。
事实证明install script附带了这个:
at_exit { Kernel.system "/usr/bin/sudo", "-k" }
由于sudo -k
无条件杀死了sudo超时,因此我不知道该选项。我对Ruby的知识非常接近,但我觉得我最好的办法是在调用时尝试从安装脚本之外覆盖at_exit
。我不知道是否可能,我的谷歌技能让我失望了。
我像这样调用安装脚本:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null
如果可能的话,我想避免分支脚本并且必须保持最新,所以任何提示或解决方法都将受到赞赏。
答案 0 :(得分:2)
在执行之前,您可以使用sed
从脚本中删除该行:
sed 's/at_exit.*sudo.*-k.*$//'
作为完整的命令行:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install | sed 's/at_exit.*sudo.*-k.*$//')" < /dev/null
答案 1 :(得分:1)
如果您仍想在Ruby方面执行此操作,则可以通过再次定义它来覆盖at_exit
方法。
def at_exit(*);end;
所以你可以用这种方式调用安装脚本:
ruby -e "def at_exit(*);end;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null