nickson@comp.vuw.ac.nz (Ray Nickson) (09/04/89)
The following bug which I reported in version 1.02 does not seem to have gone away in 1.03. From: Ray Nickson <nickson@comp.vuw.ac.nz> Date: Fri, 25 Aug 89 11:07:10 +1200 If I execute a shell script for which I have execute permission, but which does not start with #!, bash runs it itself (via a recursive call on main() !!). This is fine, except that if the parent bash is a login shell, so is the forked child, and it runs .profile. I was burned by this when I included `. ~/.bashrc' in my .profile; one of the commands that .bashrc ran was a script ... (my solution was simply to start using a .bash_profile instead). Any reason not to just zero the login_shell variable and remove the - from argv[0] before calling main()? You might also want to act_like_sh in this case (if you don't already) - does this have any impact other than on what startup files are run? -rgn -- Ray Nickson, Dept. Comp. Sci., Victoria University of Wellington, New Zealand nickson@comp.vuw.ac.nz ...!uunet!vuwcomp!nickson + 64 4 721000x8593
bfox@AUREL.CALTECH.EDU (Brian Fox) (09/04/89)
Date: Mon, 04 Sep 89 13:10:57 +1200 From: Ray Nickson <nickson@comp.vuw.ac.nz> The following bug which I reported in version 1.02 does not seem to have gone away in 1.03. From: Ray Nickson <nickson@comp.vuw.ac.nz> Date: Fri, 25 Aug 89 11:07:10 +1200 If I execute a shell script for which I have execute permission, but which does not start with #!, bash runs it itself (via a recursive call on main() !!). This is fine, except that if the parent bash is a login shell, so is the forked child, and it runs .profile. I was burned by this when I included `. ~/.bashrc' in my .profile; one of the commands that .bashrc ran was a script ... (my solution was simply to start using a .bash_profile instead). Any reason not to just zero the login_shell variable and remove the - from argv[0] before calling main()? You might also want to act_like_sh in this case (if you don't already) - does this have any impact other than on what startup files are run? -rgn -- Ray Nickson, Dept. Comp. Sci., Victoria University of Wellington, New Zealand nickson@comp.vuw.ac.nz ...!uunet!vuwcomp!nickson + 64 4 721000x8593 Are you sure? I am sure that this is not the case. Brian
nickson@comp.vuw.ac.nz (Ray Nickson) (09/05/89)
From: bfox@aurel.caltech.EDU Date: Mon, 4 Sep 89 00:35:14 PDT Date: Mon, 04 Sep 89 13:10:57 +1200 From: Ray Nickson <nickson@comp.vuw.ac.nz> The following bug which I reported in version 1.02 does not seem to have gone away in 1.03. From: Ray Nickson <nickson@comp.vuw.ac.nz> Date: Fri, 25 Aug 89 11:07:10 +1200 If I execute a shell script for which I have execute permission, but which does not start with #!, bash runs it itself (via a recursive call on main() !!). This is fine, except that if the parent bash is a login shell, so is the forked child, and it runs .profile. [ ... ] Are you sure? I am sure that this is not the case. Brian Unless I'm doing something very wrong, it is still the case. I removed my .bash_profile and my .bashrc. .profile contains only the line echo "running .profile" and /bin/true is exit 0 Then I get bash$ bash-1.03 -login running .profile bash$ type true true is /bin/true bash$ true running .profile logout If I change .profile to echo "running .profile, SHLVL=" $SHLVL true Then I get bash$ bash-1.03 -login running .profile, SHLVL= 2 bash$ type true true is hashed (/bin/true) bash$ true running .profile, SHLVL= 3 running .profile, SHLVL= 4 running .profile, SHLVL= 5 .. etc. I do not know where `logout' comes from in the first case nor why the profile does not run recursively as soon as I type bash-1.03 -login in the second case. bash-1.03 is GCC compiled on an HP300 running More/BSD, and I can reproduce the problem in a similar way in 1.02 on a Sun3/80 running SunOS4. -rgn -- Ray Nickson, Dept. Comp. Sci., Victoria University of Wellington, New Zealand. nickson@comp.vuw.ac.nz ...!uunet!vuwcomp!nickson + 64 4 721000x8593