Please avoid my last mail. The port was commented in postgresql.conf, that's why it was not picking from there. On uncommenting it , its overriding PGPORT and working fine.
The issue is if some other application has set PGPORT in environment variable, it reads that. It doesn't check the port mentioned in postgresql.conf.
For example in my case, We have PostgresPlus advanced server setup on some port and this variable is set. Now , postgresql 9.4 is reading that variable and not the port mentioned in postgresql.conf. Thus , server start fails.
Earlier in 9.2 version, init.d script was exporting and using PGPORT for db server start. In 9.4 that option has been removed. It creates issue in case if some other PGPORT variable is set to some value. Then it uses thats value and fails to start.
I think our opinion with that change was that people should be setting the port in the postgresql.conf file.