.cshrc é copiado de /etc/skel porque existe lá e é o que acontece com o conteúdo de /etc/skel na maioria das adições de conta de usuário. No entanto, isso é totalmente não relacionado a sh ou ksh ; .cshrc existe devido a csh sendo instalado e suportado desde os dias do 2BSD (uma tradição, neste ponto).
.profile é lido apenas por shells de login, então os comandos não serão selecionados por novos shells que não sejam shells de login:
valen$ cd
valen$ ed .profile
215
a
echo .profile was run
.
wq
237
valen$ exec ksh
valen$ exec ksh -l
.profile was run
valen$
O ksh(1) manual tem documentos sobre como definir uma variável de ambiente ENV que as instâncias de não-login de ksh vai ler:
valen$ ed .profile
237
d
a
export ENV=$HOME/.profile
echo now with ENV set
.
wq
263
valen$ exec ksh
valen$ exec ksh -l
now with ENV set
now with ENV set
valen$ exec ksh
now with ENV set
valen$
Dada a leitura dupla de ~/.profile com export ENV=$HOME/.profile set, talvez seja melhor ter um arquivo diferente, como ~/.kshrc , conforme recomendado pelo manual que contém seus aliases personalizados:
valen$ cat .profile
PATH=$HOME/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin:/usr/games
export PATH HOME TERM
export ENV=$HOME/.kshrc
valen$ cat .kshrc
alias cls=clear
valen$ exec ksh -l
valen$ alias | grep cls
cls=clear
valen$