Variable assignment in sh

Polytropon freebsd at edvax.de
Tue Jan 31 19:01:48 UTC 2017


On Tue, 31 Jan 2017 12:56:40 -0500, James B. Byrne wrote:
> 
> On Tue, January 31, 2017 12:51, Polytropon wrote:
> > On Tue, 31 Jan 2017 12:11:49 -0500, James B. Byrne via
> > freebsd-questions wrote:
> >>
> >> In any case, I now have set the shell in the root crontab file
> >> explicitly to /usr/local/bin/bash in hopes of avoiding this problem
> >> in the future.
> >
> > That _might_ introduce problems in the future when bash is not
> > available. My suggestion: Use /bin/sh for scripting except you
> > need to rely on a "bash-ism", a feature that bash can provide,
> > but sh cannot. However, you can use bash interactively to test
> > sh commands, there is "backward compatibility" (bash can be seen
> > as a superset of sh).
> >
> 
> How would bash become unavailable on this particular system without
> someone specifically removing it?

A rare occassion, but possible. Let's say in a worst-case scenario,
/usr isn't mounted, and you need to stick with what's on /, then
bash, which per default is /usr/local/bin/bash, isn't available.
However, bash can be linked statically _and_ copied to a location
on /, then you won't have that kind of problem.

Portability also could be a problem when you try to run something
that expects bash on a system where bash isn't installed. Always
keep in mind that bash is _not_ part of FreeBSD, while sh is.

I know, those are very special cases, and if your goal is not
portability and "guaranteed availability", then it won't hit you.
I just thought it's worth being mentioned.



-- 
Polytropon
Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...


More information about the freebsd-questions mailing list