~/projects/ini/latex/texmf
will just look in that directory you want a path component of
~/projects/ini/latex/texmf//
to search subdirectories.
These days it is probably more common to set things in texmf.cnf configuration rather than use environment variables, although the same path syntax applies either way.
So on my TeXLive 2012 system I have:
$ kpsewhich texmf.cnf
/usr/local/texlive/2012/texmf.cnf
and that file looks like
$ more /usr/local/texlive/2012/texmf.cnf
% (Public domain.)
% This texmf.cnf file should contain only your personal changes from the
% original texmf.cnf (for example, as chosen in the installer).
%
% That is, if you need to make changes to texmf.cnf, put your custom
% settings in this file, which is .../texlive/YYYY/texmf.cnf, rather than
% the distributed file (which is .../texlive/YYYY/texmf/web2c/texmf.cnf).
% And include *only* your changed values, not a copy of the whole thing!
%
If you look at the file it references in the web2c directory it is mostly comments just detailing all the things you can set. Note texmf.cnf files look a bit like shell environment settings but they are not they are read directly by the kpathsea library of TeX and work cross platforms including systems without a usable shell.
$TEXINPUTS
. What is it?.bashrc
on your home folder.export...
.:~/projects/ini/latex/texmf//:
Don't add$TEXINPUTS
which is nil in the environment; just a trailing colon stands for "add the usual value of the variable".