A coisa mais legal, bem, uma das, em sistemas UNIX é o shell. O shell é lindo e se você acha legal estar no mundo sem ele, foi mal, você não sabe o que é bom!
Sempre utilizei Bash desde a minha primeira instalação de Linux (Mandriva 7), mas eu a pouco tempo esbarrei no ZSH. ZSH é um shell definitivamente mais legal que o Bash, pelo menos pra mim. Na verdade sempre que precisei fazer coisas complexas com script eu recorria a Python ou Ruby, nunca escrevi muitos scripts em Bash na minha vida.
Bash não tinha array, hash, floats… ZSH tem, e melhor que isso, para o uso diário ele tem um auto-completion muito legal que deixa usuários de Emacs como eu (Ainda sou?) bastante felizes.
Bem, eu não utilizo mais Linux na minha máquina, mas acredito que um pacman -S zsh funcione perfeitamente!
Obs: Você pode utilizar o ZSH que já vem instalado no OSX mas por questão de gosto e otimização preriro usar o macports.
Utilizando o mac ports é bem fácil:
sudo port install zsh-devel +mp_completion +pcre +dec +examples
Depois baixe o ZSH Templates que é um belo pacote com várias customizações para o ZSH, não é obrigatório mas tem coisas bem legais, mais informaçoes aqui:
cd /Library
sudo svn co http://zsh-templates-osx.googlecode.com/svn/trunk/Library/init
cd /private
sudo svn co http://zsh-templates-osx.googlecode.com/svn/trunk/etc
Adicione esse linha:
/opt/local/bin/zsh
no arquivo:
/etc/shells
Após isso troque seu shell:
chsh -s /opt/local/bin/zsh
Pronto agora você tem o ZSH instalado usando ports, abra um novo Terminal.app e veja!
Como no bash você pode simplesmente editar seu .zshrc e colocar tudo nele, ou dividir em arquivos. Uma solução legal é usar o oh-my-zsh que organiza suas configurações. Se trata apenas de alguns scripts para customizar seu ZSH.
Para instalar:
wget http://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh
Pronto, instalado, agora vamos lá configurar. O oh-my-zsh carrega automaticamente os arquivos que estão no diretório ~/.oh-my-zsh/custom então você pode simplesmente descarregar lá suas configurações, alguns dos meus arquivos:
aliases.zsh
opts.zsh
rip.zsh
paths.zsh
Um problema que pode acontecer com você é o prompt do ZSH colocar vários /n depois de todos os comandos dados, para resolver:
--- a/lib/aliases.zsh
+++ b/lib/aliases.zsh
@@ -24,7 +24,7 @@ alias gca='git commit -v -a'
alias gb='git branch'
alias gba='git branch -a'
-alias history='fc -l 1'
+# alias history='fc -l 1'
alias ls='ls -F'
alias ll='ls -alr'
E vai ficar tudo bem (e não me pergunte o motivo…)
Dê uma chance ao ZSH e veja que você vai poder fazer coisas legais como essa:
files=($(pwd)/lala*);
for file in $files; do
rename_file_name="$(echo $file | sed 's/lala/lele/')"
git mv $file $rename_file_name
done
E sim, $files é um array!
Um outro exemplo tirado do oh-my-zsh:
for config_file ($ZSH/lib/*.zsh) source $config_file
Olhe o git completion com ZSH:

Zsh on OSX Onde aprendi a instalar e peguei os comandos para a instalação
ZSH Official Page Página oficial do ZSH
ZSH Lovers Página com vários comandos e truques para ZSH