Sua linha para today=
deve ficar assim:
today=$(date +%Y_%m_%d)
como today
agora é uma variável, ela seria designada com um $
, o que leva a palavra assim:
echo $today
que daria 2016_02_23
como saída. Assim, as linhas depois de usar essa variável today
ficariam assim:
filename="~/homework/${today}.homework"
e
vim "~/homework/${today}.homework"
ou desde que você forneceu filename
como variável, você pode fazer isso:
vim "$filename"
Ou, se você quiser realmente ser criativo, em vez de atribuir a variável primeiro, basta fazer o próprio comando no nome do arquivo quando abrir tudo em uma linha:
vim "~/homework/$(date +%Y_%m_%d).homework"
Espero que isso ajude!