After manually build bash 5.3, and set environment variable PATH to /tools/bash, when I ssh to server, it uses my build bash and gives me a non-login shell. I'm confused what was happen in this process, since I only change the PATH, this is still a ssh shell but why it is non-login?
OK, i think i finally find the problem is in my bash_profile, i put a 'evn' command which execute in /bin/bash, and then my login shell go through another shell which is a non-login but interactive shell.
Now i put all my setting to bash_profile and everything works fine.
Anyway, thanks for you guys explain about how passwd work with chsh, it not quite solving my problem but make this whole thing more clear:-)