自分のドットファイルを統合しようとしていますので、ローカルのOSXマシンとLinuxサーバ用に1つしか設定していません。私は、この条件文を持っているが、$(brew --prefix)
は、そのブロックが実行すべきではありませんにもかかわらず、Linuxマシン上で実行されている...bash:条件が満たされていないときにこのコマンドが実行されるのはなぜですか?
SYSTEM=`uname -a | cut -d" " -f1`
# These things are system specific
if [ $SYSTEM=="Darwin" ]; then
if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi
for file in ~/.completion/* ; do
if [ -f "$file" ] ; then
. "$file"
fi
done
elif [ $SYSTEM=="Linux" ]; then
alias upgrade='sudo apt-get update && sudo apt-get upgrade'
# save the IP address in case I need it later
export IP_ADDRESS=`ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'`
fi
私はLinuxマシン上で$SYSTEM
変数をエコーた場合、それはLinux
が、ソーシングのであると言いますbashrcはbrew --prefix
コマンドで失敗します。
何があってもその変数を評価しますか?私はそれを変更する方法はありますか?
'=='の前後に空白を入れてください。また、https://stackoverflow.com/questions/2237080/how-to-compare-strings-in-bash – Evert
ヒント:[ShellCheck](http://www.shellcheck.net)は自動的に[この問題]を特定します( https://github.com/koalaman/shellcheck/wiki/SC2077)やその他のよくある問題があります。 –