On Sun, Sep 22, 2013 at 05:37:51PM -0600, Ian Lepore wrote: > On Sun, 2013-09-22 at 19:27 -0400, Glen Barber wrote: > > On Sun, Sep 22, 2013 at 05:18:25PM -0600, Ian Lepore wrote: > > > What's the right way to launch the bourne shell from a makefile? I had > > > assumed the ${SHELL} variable would be set to "the right" copy > > > of /bin/sh (like maybe the one in tmp or legacy at various stages). It > > > appears that that's not the case, and ${SHELL} is whatever comes from > > > the environment, which can lead to using csh or bash or whatever. > > > > > > I see some of our makefiles use just a bare "sh" which seems reasonable > > > to me, but I don't want to glitch this in src/include/Makefile again. > > > The goal is to run a script in src/include/Makefile by launching sh with > > > the script name (as opposed to launching the script and letting the #! > > > do its thing, which doesn't work if the source dir is mounted noexec). > > > > > > > I think BUILDENV_SHELL is what you are looking for. For this specific > > case, I think instead of '#!/bin/sh', maybe '#!/usr/bin/env sh' may be > > preferable. > > > > Glen > > > > No, BUILDENV_SHELL is a special thing... it's used when you "make > buildenv" to chroot into a cross-build environment to work > interactively. I added that long ago because I can't live in a csh > shell (I mean, I can't do anything, I'm totally lost), and I wanted a > way to have "make buildenv" put me right into bash (of course, you have > to have bash in the chroot). > Ah, right. Thanks for the sanity check. > The flavor of hashbang to use shouldn't matter, since what I'm after > here is launching the shell to run the script without using the hashbang > mechanism. > You can hard-code /bin/sh directly, but what I was getting at with the '#!/usr/bin/env sh' is that the 'sh' interpreter of the build environment could be used (instead of /bin/sh directly). Then you don't need to worry about the path to sh(1). Glen
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:41 UTC