Loading ...
Sorry, an error occurred while loading the content.

Re: Global profile for ash

Expand Messages
  • jl0242
    Sounds sensible! No idea how I had this working in the past, but I ll go with the full path in the script (and just do this in future scripts too). Cheers.
    Message 1 of 9 , Apr 25, 2009
    • 0 Attachment
      Sounds sensible!

      No idea how I had this working in the past, but I'll go with the full path in the script (and just do this in future scripts too).

      Cheers.

      --- In nslu2-general@yahoogroups.com, Carl Lowenstein <clowenstein@...> wrote:
      >
      > On Fri, Apr 24, 2009 at 10:16 AM, jl0242 <japher@...> wrote:
      > >
      > >
      > > Okay, now I'm really confused. Looking at this output:
      > >
      > > http://pastebin.com/f5c759f53
      > >
      > > It looks like the path is set correctly. Ash seems to be using a version of
      > > 'find' that's not from /urs/bin *or* /opt/bin. Line 10 shows output from the
      > > version of 'find' that ash is using, line 15 shows the output from the
      > > version in /usr/bin, and line 29 shows the output from the version in
      > > /opt/bin (the findutils version, the version that I actually want).
      > >
      > > Since the steps clearly show that /opt/bin is at the front of the path
      > > (don't know where this is being set from, but I suppose that doesn't matter)
      > > - where on earth is ash getting getting this 3rd copy of find??
      >
      > As a general rule, you should specify the exact path for programs that
      > you run in a script.
      > So don't say "find", say "/opt/bin/find".
      > If you have to put it in many places in the script, you can do something like
      > FIND=/opt/bin/find
      > and then refer to it as $FIND
      >
      > carl
      > --
      > carl lowenstein <clowenstein@...>
      >
    • John
      ... Actually, for some shells, it does matter when the path was set. For speed, some shells will cache the location of an executable and the cache is not
      Message 2 of 9 , Apr 25, 2009
      • 0 Attachment
        On Fri, Apr 24, 2009 at 05:16:46PM -0000, jl0242 wrote:
        > Okay, now I'm really confused. Looking at this output:
        >
        > http://pastebin.com/f5c759f53
        >
        > It looks like the path is set correctly. Ash seems to be using a
        > version of 'find' that's not from /urs/bin *or* /opt/bin. Line
        > 10 shows output from the version of 'find' that ash is using,
        > line 15 shows the output from the version in /usr/bin, and line
        > 29 shows the output from the version in /opt/bin (the findutils
        > version, the version that I actually want). (don't know where
        > this is being set from, but I suppose that doesn't matter)

        Actually, for some shells, it does matter when the path was
        set. For speed, some shells will cache the location of an
        executable and the cache is not necessarily flushed or updated when
        you change the path. Ash, however, is likely too lightweight to have
        this feature.

        > Since the steps clearly show that /opt/bin is at the front of the path

        According to the printout, /opt/bin is not at the front of the
        path: /opt/sbin is. It may seem unlikely but did you check to see
        if /opt/sbin has your third version of find?

        > - where on earth is ash getting getting this 3rd copy of find??

        Did you try "which find"? Most shells have a "which" command to
        tell you the shell's opinion of the location of an executable.

        John
      • jl0242
        Cheers John, I m starting to think there is a bigger problem here. I ve been doing some googling on this No help available error and it actually sounds like
        Message 3 of 9 , Apr 26, 2009
        • 0 Attachment
          Cheers John,

          I'm starting to think there is a bigger problem here. I've been doing some googling on this "No help available" error and it actually sounds like it's a bug:
          http://www.mail-archive.com/busybox@.../msg00793.html

          I installed 'which' via ipkg. Have a look at this output (something's not right here IMO):

          # which find
          /opt/bin/find
          # find -maxdepth 1
          BusyBox v1.3.1 (2007-12-29 03:38:35 UTC) multi-call binary

          No help available.

          # /opt/bin/find -maxdepth 1
          .
          ./backup
          ./repair
          ./tmpmnt
          ./share
          ./share2
          #

          Not much more on the list about this problem, but I found a couple of examples:
          http://tech.groups.yahoo.com/group/nslu2-linux/message/20778
          http://tech.groups.yahoo.com/group/nslu2-linux/message/20842


          --- In nslu2-general@yahoogroups.com, John <jl.050877@...> wrote:
          >
          > On Fri, Apr 24, 2009 at 05:16:46PM -0000, jl0242 wrote:
          > > Okay, now I'm really confused. Looking at this output:
          > >
          > > http://pastebin.com/f5c759f53
          > >
          > > It looks like the path is set correctly. Ash seems to be using a
          > > version of 'find' that's not from /urs/bin *or* /opt/bin. Line
          > > 10 shows output from the version of 'find' that ash is using,
          > > line 15 shows the output from the version in /usr/bin, and line
          > > 29 shows the output from the version in /opt/bin (the findutils
          > > version, the version that I actually want). (don't know where
          > > this is being set from, but I suppose that doesn't matter)
          >
          > Actually, for some shells, it does matter when the path was
          > set. For speed, some shells will cache the location of an
          > executable and the cache is not necessarily flushed or updated when
          > you change the path. Ash, however, is likely too lightweight to have
          > this feature.
          >
          > > Since the steps clearly show that /opt/bin is at the front of the path
          >
          > According to the printout, /opt/bin is not at the front of the
          > path: /opt/sbin is. It may seem unlikely but did you check to see
          > if /opt/sbin has your third version of find?
          >
          > > - where on earth is ash getting getting this 3rd copy of find??
          >
          > Did you try "which find"? Most shells have a "which" command to
          > tell you the shell's opinion of the location of an executable.
          >
          > John
          >
        • Rod Whitby
          ... If your shell is actually a symlink to busybox, and busybox has find enabled as an applet, then I think it will find the applet first ahead of whatever
          Message 4 of 9 , Apr 26, 2009
          • 0 Attachment
            jl0242 wrote:
            > I'm starting to think there is a bigger problem here. I've been doing some googling on this "No help available" error and it actually sounds like it's a bug:
            > http://www.mail-archive.com/busybox@.../msg00793.html
            >
            > I installed 'which' via ipkg. Have a look at this output (something's not right here IMO):
            >
            > # which find
            > /opt/bin/find
            > # find -maxdepth 1
            > BusyBox v1.3.1 (2007-12-29 03:38:35 UTC) multi-call binary
            >
            > No help available.
            >

            If your shell is actually a symlink to busybox, and busybox has 'find'
            enabled as an applet, then I think it will find the applet first ahead
            of whatever is in the path. Only if you give a full pathname
            (/opt/bin/find) will it ignore the in-built find applet.

            -- Rod
          • jl0242
            Thanks Rod, you ve hit the nail on the head there. I m pretty sure I m seeing the busybox find applet in action here. A few questions: 1. Is there any
            Message 5 of 9 , Apr 27, 2009
            • 0 Attachment
              Thanks Rod, you've hit the nail on the head there. I'm pretty sure I'm seeing the busybox 'find' applet in action here. A few questions:

              1. Is there any problem in me symlinking /bin/sh to /opt/bin/bash? (I have bash installed). Will this affect any core Unslung (6.10) functionality?

              2. Has the 'find' applet always been included in the BusyBox config for Unslung? I'm not sure entirely certain why, but I never had these problems before I moved to Unslung 6.10 recently. The other examples I've found on the list all seem to have been posted since Unslung 6.10.

              3. Is there a reason that Unslung is still using BusyBox 1.3.1? They look to have got to 1.14.x now.

              Thanks for the help!

              Cheers,
              joe


              --- In nslu2-general@yahoogroups.com, Rod Whitby <rod@...> wrote:
              >
              > jl0242 wrote:
              > > I'm starting to think there is a bigger problem here. I've been doing some googling on this "No help available" error and it actually sounds like it's a bug:
              > > http://www.mail-archive.com/busybox@.../msg00793.html
              > >
              > > I installed 'which' via ipkg. Have a look at this output (something's not right here IMO):
              > >
              > > # which find
              > > /opt/bin/find
              > > # find -maxdepth 1
              > > BusyBox v1.3.1 (2007-12-29 03:38:35 UTC) multi-call binary
              > >
              > > No help available.
              > >
              >
              > If your shell is actually a symlink to busybox, and busybox has 'find'
              > enabled as an applet, then I think it will find the applet first ahead
              > of whatever is in the path. Only if you give a full pathname
              > (/opt/bin/find) will it ignore the in-built find applet.
              >
              > -- Rod
              >
            • Mike (mwester)
              ... Don t do that. As others have already pointed out, there are numerous other ways to ensure that you get the correct find utility. There are differences
              Message 6 of 9 , Apr 30, 2009
              • 0 Attachment
                jl0242 wrote:
                > Thanks Rod, you've hit the nail on the head there. I'm pretty sure I'm seeing the busybox 'find' applet in action here. A few questions:
                >
                > 1. Is there any problem in me symlinking /bin/sh to /opt/bin/bash? (I have bash installed). Will this affect any core Unslung (6.10) functionality?

                Don't do that. As others have already pointed out, there are numerous
                other ways to ensure that you get the correct "find" utility.

                There are differences between /bin/sh (the busybox "ash" shell) and bash
                -- these differences may result in strange behavior of your device, or
                may even prevent it from booting correctly.

                I'm still confused - why not just set the default shell for your login
                account to /bin/bash, and be done with all this? If you need to run
                bash for some reason from a startup script then just invoke bash
                directly from your startup script:

                S99MyStrangeProgram:

                #!/bin/bash
                do whatever stuff one needs...


                > 2. Has the 'find' applet always been included in the BusyBox config for Unslung? I'm not sure entirely certain why, but I never had these problems before I moved to Unslung 6.10 recently. The other examples I've found on the list all seem to have been posted since Unslung 6.10.

                No. A great deal of work was done to make it possible to use the
                busybox find applet, in order to save flash space.

                > 3. Is there a reason that Unslung is still using BusyBox 1.3.1? They look to have got to 1.14.x now.

                Er -- Unslung 6.x pre-dates busybox 1.14 by a loooong ways. You have to
                look at what was generally considered a stable version of busybox back
                when Unslung 6.x development was underway.

                Also, there's the need for flash space; the design goal for the 6.x
                busybox was to add the applets necessary to be able to do the unsling
                operation with a minimum of extra flash space consumed, and to do so
                while retaining compatibility with the busybox version shipped by
                Linksys (because of dependencies and custom Linksys patches to busybox).

                The intent is that should one require non-busybox utils, one would
                install procps, core-utils, bash, etc. and set the appropriate shells
                and paths (as has been suggested in previous emails).


                Mike (mwester)
              Your message has been successfully submitted and would be delivered to recipients shortly.