[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: init script can't find /bin/dirname



On 2014-12-21 21:58 +0100, Rob Owens wrote:

> The /etc/init.d/mysql script on one of my systems is complaning that it
> can't find /bin/dirname and /bin/basename.  Line 24 of the script is
> this:
>
> SELF=$(cd $(dirname $0); pwd -P)/$(basename $0)
>
> Both dirname and basename live in /usr/bin, not /bin.

Which should be fine from the script's point of view as long as
$remote_fs is in the "Required-Start" header (i.e. /usr is guaranteed to
be mounted).

> I know I could add a PATH statement to the init script, but this problem
> is my own doing and I'd like to fix it right.  I "cross-graded" this
> system from 32-bit to 64-bit using this guide:
>
> www.ewan.cc/?q=node/90
>
> It worked pretty well, but not perfectly.  Some things got missed, like
> screen, ntp, and a couple other packages.  I'm thinking that maybe
> another missing package is preventing the mysql init script from
> checking for /usr/bin/dirname.

That seems to be unlikely, but you could add a line with "echo $PATH" to
the script to find out what PATH actually is.

> I can run '/etc/init.d/mysql start' from a terminal and it works fine,
> because it picks up the PATH associated with the terminal.  So this is
> only a boot-time issue.
>
> So is there a package or a  global setting somewhere that sets the PATH 
> for init scripts?

PATH is set directly by init.  If I read the source code correctly,
sysvinit sets it to "/sbin:/usr/sbin:/bin:/usr/bin" while systemd uses
"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin".

Cheers,
       Sven


Reply to: