Create a gist now

Instantly share code, notes, and snippets.

#!/usr/bin/env bash
echo 'Put Homebrew location earlier in PATH ...'
export_brew_path = "
# recommended by brew doctor
export PATH='/usr/local/bin/usr/local/sbin:$PATH'"
if [ "$SHELL" = '/bin/zsh' ]; then
echo export_brew_path >> ~/.zshenv
source ~/.zshrc
elif [ "$SHELL" = '/bin/bash' ]; then
echo export_brew_path >> ~/.bashrc
source ~/.bashrc
echo 'Installing RVM (Ruby Version Manager) ...'
bash -s stable < <(curl -s
rvm_load_line "
[[ -s '/Users/`whoami`/.rvm/scripts/rvm' ]] && source '/Users/`whoami`/.rvm/scripts/rvm'"
if [ "$SHELL" = '/bin/zsh' ]; then
echo rvm_load_line >> ~/.zshrc
source ~/.zshrc
elif [ "$SHELL" = '/bin/bash' ]; then
echo rvm_load_line >> ~/.bashrc
source ~/.bashrc

Dan, on line 9 I think you want to pipe to ~/.zshrc.

Also, you can try using $0 to get the current prompt. I think that would be what you want, as $SHELL returns /bin/bash for me even I'm running zsh (but I didn't chsh)

$0 for bash will return bash, and $0 for zsh will return -zsh (not sure about the leading hyphen.)

if [ $0 -eq '-zsh' ]

What if divide this two script into one for bash and another one for zsh (Exact same script except zshrc->bashrc). And in the tell the bash user to grab bash one, and vice versa. Maybe a simple solution to avoid possible error occurs.


I'm a fan of:

if [ -n "$ZSH_VERSION" ]; then
   # zsh
elif [ -n "$BASH_VERSION" ]; then
   # bash
   # error

zsh does not always load ~/.profile, so I wouldn't depend on that.

And, as always, I question whether this script you're writing needs to be a bash script instead of normal POSIX.


This is probably just test code, but careful on line 6: you're missing a path separator

export PATH='/usr/local/bin/usr/local/sbin:$PATH'"

export PATH='/usr/local/bin:/usr/local/sbin:$PATH'"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment