sh[it] and What am I missing here?

RW rwmaillists at googlemail.com
Sun Jun 5 23:01:17 UTC 2016


On Sun, 5 Jun 2016 13:15:25 -0400
Baho Utot wrote:

> On 06/05/16 12:31, David Christensen wrote:
> > On 06/05/2016 08:38 AM, Baho Utot wrote:
> > ...  
> >> root at baho-utot:~ # set  
> > ...  
> >> shell   /bin/csh  
> > ...  
> >> tcsh    6.18.01  
> > ...  
> >> OK tcsh as I thought  
> > ...  
> >> OK switch shells
> >>
> >> root at baho-utot:~ # /bin/sh
> >> # set  
> > ...  
> >> Why is the SHELL variable still set to /bin/csh  
> > ...
> >
> > Because you are invoking a program (/bin/sh) and that program did
> > not modify the SHELL environment variable.
> >
> >
> > On 06/05/2016 09:15 AM, jd1008 wrote:  
> > > Do I understand correctly that you want bash to be your shell?
> > > If so, you can run (as root), the command
> > > chsh <username>  
> >
> > +1
> >
> > Take a look at:
> >
> > https://www.freebsd.org/doc/en/articles/linux-users/shells.html
> >
> >
> > David  
> 
> I understood that, But I do not want to change the default shell.
> I only want to create a script ( sh script ) and run if from a clean 
> machine with just base install nothing else and then run my sh script
> to build some ports.  That's were the trouble lies.  ie functions not 
> returning status for example:

It doesn't work because the shell script is wrong. [ func ] doesn't
execute func. func and "]" are actually arguments to "[". Using
backticks around func executes it.
 

See man test for the rest.


$ cat /tmp/foo
#!/bin/sh

func() {
     echo "Yep its me"
     return 1
}

if ! func  ; then
     echo "This works"
fi


if [ "`func`" = "Yep its me" ]  ; then
     echo "This works too"
fi


if [ "`func`"  ]  ; then
     echo "And this works also"
fi

$  /tmp/foo
Yep its me
This works
This works too
And this works also





> test.sh
> chmod +x test.sh
> 
> #!/bin/sh
> 
> func() {
>      echo "Yep it's me"
>      return 1
> }
> 
> if [ func ] ; then                 # if [ 1 = func ] or if [ 1 -eq
> func ] doesn't work either
>      echo "This works"
> fi
> 
> ./test.sh
> 
> [: func: unexpected operator
> _______________________________________________
> freebsd-questions at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to
> "freebsd-questions-unsubscribe at freebsd.org"


More information about the freebsd-questions mailing list