Variable assignment in sh

Polytropon freebsd at edvax.de
Tue Jan 31 19:05:10 UTC 2017


On Tue, 31 Jan 2017 12:21:49 -0600 (CST), Valeri Galtsev wrote:
> 
> On Tue, January 31, 2017 11:51 am, Polytropon wrote:
> > On Tue, 31 Jan 2017 12:11:49 -0500, James B. Byrne via freebsd-questions
> > wrote:
> >>
> >> On Tue, January 31, 2017 10:18, Polytropon wrote:
> >> > On Tue, 31 Jan 2017 10:06:37 -0500, James B. Byrne via
> >> > freebsd-questions wrote:
> >> >> Why am I getting this result when I attempt a simple variable
> >> >> assignment in the default sh?
> >> >>
> >> >> # ENV=$HOME/.shrc; export ENV
> >> >> ENV=/root/.shrc: Command not found.
> >> >> export: Command not found.
> >> >>
> >> >> This example is taken verbatim from the sh manpage provided with
> >> >> FreeBSD.
> >> >
> >> > This looks like you're running a sh command inside csh.
> >> > Note that the C shell (FreeBSD's default interactive shell)
> >> > does variable assignments differently:
> >> >
> >> > 	setenv ENV /root/.shrc
> >> >
> >> > 	set FOO = 1
> >> >
> >> > See "man csh" for details.
> >> >
> >> > The command you've presented looks like it would belong into
> >> > a shell script (FreeBSD's default scripting shell)...
> >> >
> >>
> >> I note that root is configured in FreeBSD with a default shell of
> >> /bin/csh and that the user toor has no default shell specified at all
> >> notwithstanding having a Real Name of 'Bourne-again Superuser'.  I
> >> checked several of our FreeBSD hosts and all have the same
> >> configuration for root and toor so I infer that this is how FreeBSD is
> >> shipped.
> >
> > That is correct. The user toor has no shell assigned per
> > default ("inactive user"), and root, as well as all other
> > users, default to the C shell as the login shell (which
> > typically is an interactive shell).
> 
> Regular users do not default to csh, but to sh if you don't specify
> particular shell on "pw adduser" command.

Yes, that is right, but I didn't notice because I usually use
"preconfigured wrappers" to user account creation. The inter-
active "adduser" program can also have defaults for csh in its
configuration file, like "pw useradd -s <shell>" can do.





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


More information about the freebsd-questions mailing list