Tente isso
OLDIFS=$IFS
IFS='
'
typeset -a file
file=($(cat list.txt))
for i in "${file[@]}"; do
echo $i >> ${i:0:1}.txt
done
IFS=$OLDIFS
Note que a parte IFS geralmente não é necessária. Também testei no Zsh 4.3.17 no linux e no Bash 4.2.37.
O que ele faz é declarar uma matriz, atribui o conteúdo do arquivo a essa matriz e, em seguida, faz um loop sobre cada elemento da matriz, portanto cada linha e echo desse elemento no arquivo com o nome da primeira lettes plus ' .txt 'anexado a ele.