Eu sou um idiota.
Eu copiei uma função bash de algum lugar semelhante a este:
md()
{
[ $# -eq 0 ] && { echo "$0 dirname [permissions]"; return; }
[ -d "$1" ] && { echo "%1 already exists!"; return; }
mkdir -m ${2:-0755} -p "$1"
}
O problema era que eu tinha anteriormente um alias como alias md="mkdir"
assim quando bash analisava a nova função bash, ela expandia o md () para mkdir () e a função se tornava infinitamente recursiva e travava o shell.