alias 'gsi=<<eof grep --color'
Funcionar como alias é como a substituição de texto do pré-processador, em que a substituição é interpretada como código de shell novamente.
O seu não estava funcionando como você tinha que "$1" . Com gsi file.txt substituído por cat <<eof | grep --color "$1" file.txt , o shell continua a interpretar essa linha de comando e $1 nesse ponto é o primeiro parâmetro posicional do shell que provavelmente está vazio, a menos que você tenha feito um set something antes. Então, você deseja remover esse "$1" aqui. Você pode remover o UUOC também.
gsi() { cat <<eof | grep --color "$1" ; }
está errado de um ponto de vista de sintaxe, pois a linha eof está ausente depois desse cat <<eof .