Gracias
ruina, he comprobado que solo tengo el problema cuando ejecuto el programa en modo "shell", si lo ejecuto directamente funciona
Código Delphi
[-]
.....
tmpDir := GetCurrentDir;
{$ifdef LINUX}
tmpCab := 'LINUX';
libC.system(PChar('echo "[LINUX]" > ' +tmpDir+'/user.ini'));
libC.system(PChar('echo "home=$HOME" >> '+tmpDir+'/user.ini'));
{$else}
tmpCab := 'WINDOWS';
UserIni := TIniFile.Create( tmpDir+'/user.ini' );
UserIni.WriteString( tmpCab, 'home', 'C:\PROGRAMAS' );
UserIni.Free;
{$endif}
UserIni := TIniFile.Create( tmpDir+'/user.ini' );
DIR_MAIN := UserIni.ReadString( tmpCab, 'home', '' );
UserIni.Free;
if( DIR_MAIN='' ) then begin
.....
Application.Terminate;
exit;
end;
.....
Vamos que solo quiero saber donde voy a tener los directorios de trabajo de la aplicación (y ya que estoy con el Linux, pués aprender algo más)
Otra cosa

(morro tengo) hay mucha documentación y ejemplos para evitar dos instancias del mismo programa, pero solo lo he visto para Windo$ ¿No hay nada para Linux?
Gracias adelantadas
Salvica