そもそもが全く間違ってて本当にプログラミング出来るのか?ってレベルなんだが

スペース入りのファイル名をそのまんま渡すとスペースでちょん切られておかしな動作になるのは
IFSが定義されてない時はシェルがevecve呼ぶ時にスペースをデリミタとして使うからであって各アプリの問題じゃねぇし

っていうか「file name」っていうスペース込みの1つのファイル名をエスケープとかクオートなしに渡した場合各アプリの側が受け取るargvは
["実行ファイル名", "file", "name"]って言う形で間にスペースが入るかとかの情報は無いからそれを「file name」として扱う事はそもそも不可能だし