# The shell that is used is really a matter of taste.



## dbuff (Apr 6, 2014)

Hi,
I'm new to unix-like OS. I want to learn command line as a part of my self-designed computer programming training. Eventually I would like to program servers in PHP, and also learn FreeBSD (my choice after browsing through several Unix-like OS's) System Administration. At this point I really have no preferences but still need to start with something. Which shell would you recommend to learn first? Does it matter? Thanks
dbuff


----------



## wblock@ (Apr 7, 2014)

It depends on what you mean by "learn".  Which shell to use interactively is really up to you.  tcsh(1) is built in, and many of us like it for an interactive shell.

Write scripts for sh(1).  On FreeBSD, it is a real sh, not bash pretending to be something else.


----------



## obsigna (Apr 7, 2014)

dbuff said:
			
		

> ... Does it matter?



I like very much the point of view on this subject that has been written down in the introduction of the Shell Scripting Primer.



			
				Shell Scripting Primer: Shell Script Dialects said:
			
		

> ... The terminology and subtle syntactic differences can be confusing—even a bit overwhelming at times; ... Fortunately, once you get the basics, things generally fall into place as long as you avoid using shell-specific features. Stay on the narrow road and your code will be portable.


----------



## Chris_H (Apr 7, 2014)

Greetings, @dbuff.
 Boy! If this isn't a Bikeshed[1][2][3] waiting to happen. I don't know what is. 
That said. From my own personal experience. (t)csh provides for anything you would ever hope to need. It is _extremely_ featurefull, but you should never feel overwhelmed, as you have no need to learn everything it offers, in order to enjoy/use it. I think the only viable complaint I've ever encountered from anyone. Was it's handling of quotes (`"`, `'`, and backtics ```). As they are handled (escaped) differently, than some people are accustomed to, coming from bash(), and others -- including perl(). But, other than that. I couldn't imagine anyone not using it.
It provides nice colorful listings, by simply adding

```
setenv CLICOLOR
```
to your .cshrc(). You get a nice history() buffer, for all your commands. As well as command-completion (filec()). Who could want for more? But there _is_ more, much more. Maybe you'd like more information in your prompt:

```
set prompt = "\n%B%~%b\n%t\n%d, %D\n`/bin/hostname -s`# "
```
gives you (in my case):

```
~
11:24am
Mon, 07
demon0#
```
and

```
/usr/src
11:25am
Mon, 07
demon0#
```
if I'm in the `/usr/src` folder. It goes on, and on. I can't imagine anyone needing for more than (t)csh provides for. 

--Chris

1) What Is A "Bikeshed"? http://www.freebsd.org/doc/en/articles/mailing-list-faq/bikeshed.html
2) 15.12. Why should I care what color the bikeshed is? http://www.freebsd.org/doc/en_US.ISO8859-1/books/faq/misc.html#BIKESHED-PAINTING
3) http://bikeshed.com/


----------



## ralphbsz (Apr 8, 2014)

...empty...


----------



## dbuff (Apr 27, 2014)

Thanks. I've read your posts carefully, and also checked Shell Scripting Primer. Very helpful. Thanks for teaching me about bikesheds - hope will recognize them in the future.


----------

