在OS X上找到brew的安装位置

dwk*_*kns 6 bash homebrew

我正在创建一个BASH脚本,需要安装几个应用程序.ffmpegsox

为确保我的脚本运行时它们就位,我首先检查Homebrew的安装:

#!/bin/bash
which -s brew
if [[ $? != 0 ]] ; then
    # Install Homebrew
    /usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
fi
Run Code Online (Sandbox Code Playgroud)

然后我检查soxffmpeg安装:

echo "---- checking for sox ----"
which -s sox || /usr/local/bin/brew install sox

echo "---- checking for ffmpeg ----"
which -s ffmpeg || /usr/local/bin/brew install ffmpeg
Run Code Online (Sandbox Code Playgroud)

我面临的问题是安装Homebrew但是在非标准位置.

我必须使用Homebrew的完整路径,因为这个脚本是在Playtypus中运行的.

所以问题是:如何在BASH脚本中可靠地获取Homebrew的安装路径?

dwk*_*kns 9

回答我自己的问题......

您可以测试输出which brew并相应地处理事物.为了优雅地处理未安装Homebrew的情况,您可以使用if which brew 2> /dev/null哪个重定向stderr/dev/null.

brew --prefix 在这里也很有用,因为它给出了Homebrew安装的应用程序符号链接的路径,而不是它们的实际安装路径.

一个工作并显示此工作的脚本:

#!/bin/bash
if which brew 2> /dev/null; then
    brewLocation=`which brew`
    appLocation=`brew --prefix`
    echo "Homebrew is installed in $brewLocation"
    echo "Homebrew apps are run from $appLocation"
else
   echo "Can't find Homebrew"
   echo "To install it open a Terminal window and type :"
   echo /usr/bin/ruby -e \"\$\(curl\ \-fsSL\ https\:\/\/raw\.github\.com\/Homebrew\/homebrew\/go\/install\)\"
fi
Run Code Online (Sandbox Code Playgroud)

感谢Allendar的指示.