Le 16 août 2010 à 11:53, Axel Dörfler a écrit : > pulkomandy <pulkomandy@xxxxxxxxxxxxxxxxx> wrote: >> On Mon, Aug 16, 2010 at 11:28:42AM +0200, Axel D?rfler wrote: >>> What's the exact purpose of the --login, anyway? >> http://www.faqs.org/docs/bashman/bashref_63.html#SEC63 >> >> It makes bash read /etc/profile instead of ~/.bashrc . >> This is specific to bash, so it has likely nothing to do in Terminal. > > If bash is invoked as "sh", it should already do that in order to mimic > POSIX requirements - and AFAICT that's what we do. No. Running /bin/sh alone doesn't make it a login shell. Login shells should only be the top-level ones, not the shells started by subprocesses, for ex. The correct way to start a shell from a terminal should be with argv = "-theshell". This indicates it's a login shell (and not a subshell). For ex here on OSX ps x gives: 1071 s007 SN+ 0:00.68 -bash Actually OSX Terminal.app does run login -pf $USER to actually let it spawn the shell itself. Our /bin/login probably already checks the user shell anyway. The use of --login actually comes from BeOS being unable to pass argv correctly. Instead R5 copied the absolute path to the launched binary in argv. The workaround in R5 was therefore to pass --login which only works for bash and does the same as prepending - to argv. IIRC we fixed this bug in Haiku already so we can probably get away with this --login trick, and either use -$SHELL or just /bin/login -pf $USER. François.