Is there some reason why fexpand() was removed from unix.pp ?
fexpand was in unit linux because unit dos used it, and it wasn't supposed to be used directly. (iow fexpand and some similar routines were both in unit unix/linux and dos).
This problem (generic functions exported via a non-generic unit because of an internal interface) has been corrected by cleaning unit unix.
Is it gone forever? Or maybe it is moved to another unit?
It is still in dos, and slightly different in sysutils (delphi compat). The flavour you use is a matter of taste (and depends if you want to be more TP compat or delphi compat).
In sysutils it is a function:
function ExpandFileName (Const FileName : string): String;
We advise to use sysutils as much as possible, since in general the sysutils routines have less limits on path length (dos uses shortstrings, 255 char max). Even the routines that are not 255 char clean yet (like expandfilename :-) at least have interface definitions that allow to improve this in the future.