Talk:Bash

From Wikipedia, the free encyclopedia

This is the talk page for discussing improvements to the Bash article.

Article policies
This article is part of WikiProject Free Software, an effort to create, expand, organize, and improve free software-related articles.
B rated as B-Class on the assessment scale
High rated as High-importance on the assessment scale

Contents

[edit] Install instructions?

I don't think that the Bash installation instructions should be part of this article — they just duplicate the same information in the bash distribution (and probably do an inadequate job of it). Does this kind of information really belong in an encyclopedia? --Neilc 07:56, 30 Nov 2004 (UTC)

I feel the same way. --Mark Bergsma 15:13, 30 Nov 2004 (UTC)
I've commented out the "How to install Bash" section for now, but the reason I added it in the first place was because Bash is often an add-on shell (i.e., it doesn't come with every UNIX system), so people who want to start using it need to download, build, and install it themselves. This is not hard to do if you are a programmer, but non-programmers often have no idea what to do with a tarball after they download it, even if they know in some abstract way that a "build and install" must be done. Perhaps a reduced summary of this section should remain to help such a user? — franl 16:55, 30 Nov 2004 (UTC)
Very well, but that still belongs in the documentation, not in an encyclopedia. Perhaps add a convenient link to it. --Mark Bergsma 20:05, 9 Dec 2004 (UTC)

[edit] OSX

"Bash is the default shell on most Linux systems as well as on Mac OS X "

I thaught CSH was the OSX one? —Preceding unsigned comment added by 86.16.160.17 (talk) 19:18, 26 November 2007 (UTC)

At least on my Leopard (and previous Tiger), it is Bash. — ww —Preceding unsigned comment added by 118.26.230.12 (talk) 17:00, 15 April 2008 (UTC)

[edit] How to test for file extensions

I suspect this is the wrong place for this (that's why I'm not putting it in the article) but this little tip needs to be better promoted, so if you know of a better place for it, please move it there. In any case...

When writing a bash script which should do different things based on the the extension of a file, the following pattern is helpful.

#filepath should be set to the name(with optional path) of the file in question
 ext=${filepath##*.}
 if [[ "$ext" == txt ]] ; then
   #do something with text files
 fi

(My source for this is the slike.com Bash FAQ. Maybe this should go in the Wikibook on this subject, or in some kind of Bash Cookbook? --JesseW 21:54, 21 July 2005 (UTC)

I'd suggesting starting a new chapter in the wikibook.... how about wikibooks:Bourne Shell Scripting/Cookbook? Lupin 23:48, 21 July 2005 (UTC)
Ok, I've moved it there. That will be my first real edit to Wikibooks... Maybe something will get started... --JesseW 01:05, 22 July 2005 (UTC)

A note on the code above: - first, it's not correct if the file doesn't contain any dot. Like a file called "txt" will be said to have a .txt extension while it doesn't - second, it's a non sh syntax for which there is a better sh equivalent (it's preferable to write a script using a standard syntax rather that the syntax of one specific version of one specific shell implementation):

 case $filepath in
   ?*.txt)
     # do something with text files
     ;;
 esac

—Preceding unsigned comment added by Stephane Chazelas (talk • contribs) 00:17, September 10, 2006

[edit] Linux vs. GNU/Linux

I can't help but feel that this change is in factual error. As Bash is a GNU product, on a presumptive non-GNU-based Linux system, it would not be the default shelll. Please don't turn this into a flamewar over the term GNU/Linux vs. the name Linux alone; this is merely an inquiry into whether a non-GNU-based Linux distribution would use Bash as its default shell. Jouster 20:45, 22 August 2005 (UTC)

I think its alright the way it is. You see, in my opinion, the word Linux here imply the kernel, not the who operating system. If it was the later, I think the edit would have been a mistake. Now, some bash tricks [1] —Preceding unsigned comment added by Wk muriithi (talkcontribs) 16:37, November 29, 2005

[edit] Bash commands

How about a list of Bash commands? --88.111.52.30 15:48, 29 December 2005 (UTC)

Probably not. Such a list is not particularly encyclopedic or interesting- Wikipedia is not a repository for manuals after all. --Maru (talk) Contribs 18:12, 30 December 2005 (UTC)
I think it'd be worth mentioning that using the help command will bring up Bash-integrated commands (which are noteworthy different than those in /bin ). Particularly, using foreground (fg) and background (bg). Likewise, how the shell interprets keybindings such as Ctrl-Z and Ctrl-C. 69.22.210.109 19:05, 25 July 2006 (UTC)

[edit] Pipes

I have to say that I'm a little disappointed by the lack of the discussion of pipes. —Preceding unsigned comment added by 69.25.215.133 (talk • contribs) 17:29, January 12, 2006

Agreed, more elaboration on pipes & filters, and their use vis-a-vis "everything is a file" and /proc would greatly improve this article. 69.22.210.109 19:07, 25 July 2006 (UTC)
Everything is a file is great, but it's an operating system feature, and bash (by design) doesn't know anything about it. Many platforms on which bash works just fine don't have /proc or /dev/tcp or anything else along those lines. --TotoBaggins 05:22, 11 March 2007 (UTC)

[edit] Integer Mathematics

I don't really understand this:

"A major limitation of the Bourne shell is that it cannot perform integer calculations without spawning an external process. Bash can perform in-process integer calculations using the ((...)) command and the $[...] variable syntax, as follows:"

So it can't do calculations without spawning an external process, ok... but wait, here's how to do it 'in-process'? Confused. --Ling

Bourne can't do integer calcs in process, but Bash can. Masterdriverz 17:21, 13 May 2006 (UTC)

[edit] OpenBSD

Some of the bits in here don't work on OpenBSD, although they do on Linux. —Preceding unsigned comment added by 66.192.62.82 (talk • contribs) 15:39, July 26, 2006

Could you be more specific? Which bits don't work on OpenBSD? --maru (talk) contribs 00:05, 27 July 2006 (UTC)

[edit] Unsorted comments about the bash page

First, about the credit. I don't think any of the feature described in the page was of the bash authors' invention. Most if not all features are copied from other shells: ksh for the syntax, csh/tcsh for the history and user interface and one or two zsh features. Maybe those features would be better introduced in the ksh/csh/zsh pages instead.

Minor point:

it should be:

echo "$((...))" instead of echo $((...)) as bash performs word splitting upon arithmetic expansion in that case (contrary to pdksh or zsh for instance).

It may be good to say that $[...] shouldn't be used as it's not a standard sh syntax contrary to $((...)).

The exit status of ((...)) is 0 or 1 depending on whether the expression resolves to 0 or not (a non-zero expression means "true" so a 0 exit status). So ((1+1)) is true and ((1-1)) is false.

bash has several I/O redirection syntaxes that the traditional Bourne shell lacks. bash can redirect standard output and standard error at the same time using this syntax:

The Bourne shell doesn't lack that. bash is only providing with a short cut. &> foo (why didn't bash just used the same as csh or zsh: >& ?) is the same as > foo 2>&1.

<<< 'string' is inherited from ksh93 which inherited it from zsh which inherited it from rc.

The regular expression syntax is the same as that documented by the regex(7) man page.

That regex man page when it exists documents several regexp formats. bash implements the POSIX extended regexps.

About startup scripts, it should be noted that some Linux distributions for instance may interfer with that by changing some default configure values at compile time (like enabling a system-wide bashrc or disabling the sourcing of bashrc on rsh or ssh connections). —Preceding unsigned comment added by Stephane Chazelas (talk • contribs) 00:56, September 10, 2006

You seem to know a lot about the various shells, so don't be shy about improving the article itself rather than noting its problems in here. Thanks! --TotoBaggins 05:15, 11 March 2007 (UTC)

[edit] Bash special characters

For example, the character % and & does have a special meaning. So, say I dump something to stdout, I need to escape those characters. It would be nice to have a list here because printf won't work as expected. Sure, I know you can do all the aliases you want. I know it's likely to have been listed in the docs, but I'm rather sure it could be a nice addition and does not seem to require much work by people having to deal with this all days. Thanks!
83.190.231.93 21:33, 11 December 2006 (UTC)

[edit] Article Cleanup Co-Ordination Point

I'd say a lot of the examples should be removed or moved to Wikibooks if they're not there already. Concepts like I/O redirection need only be linked to the articles which describe them, and a brief introduction given here. [edit - first we need to create the I/O redirection article :-]
Some random questions it might answer:
  • Does it have a larger overhead than other shells, as it does have a lot of features?
  • Is there a port for Mac or OSX (I would assume so - also is it the default for the X terminal thing)?
  • For builtin commands like test and pwd which also have an entry in /bin, are they really builtin or does it just call the other program?
  • Bash shares a lot of features in common with perl - but perl is generally used for web applications, but why? Is it less secure, harder to write complex applications in, etc?
One final fact (from the bash docs), when bash is run through a symlink called "sh", it will mimic the historical POSIX sh functionality more closely. --h2g2bob 10:41, 20 March 2007 (UTC)

[edit] Versions

Anyone want to mention the differences between versions? I thought there was a version 1.0 and a version 2.0. Am I correct? Anyone want to mention this? --Bill.albing 19:17, 21 December 2006 (UTC) Insertformulahere

[edit] Elements of Style

Some people write admirably well considering they're not professional writers but in general Wiki would benefit by trained proofreaders. Another recurring annoyance is how people in the US (possibly North America) insist on putting double space after a full stop when they should know by now it's not recognised by HTML. This latter fact is most likely due to TBL fortuitously not being educated in the US or NA. Also, cutting down, on the number of, commas would greatly, improve, the readability, of Wiki, articles. As reference try visiting a major UK news site and see how English is supposed to be written: it's written to be read, not to be spoken. The comma is not a grammatically correct replacement for 'uh' or 'um'. —Preceding unsigned comment added by 62.1.24.107 (talkcontribs) 12:18, February 4, 2007

[edit] Tutorial stuff?

I'm removing this all. It gets bigger every time I look at the article. If we need specific comparisons to other shells then exaples might be okay, but not the manual we have now (which may as well be in yiddish as far as casual users are concerned). Chris Cunningham 12:12, 10 May 2007 (UTC)

I reverted your May 10th removal of most of the content from the bash page. Wikipedia shouldn't be dumbed down for the layman in all cases -- leave that for the intro. As a quick example: [Variations to the Standard Genetic Code]. Information about how bash handles & behaves with variables, whitespace, I/O redirection, etc is valid. Jeff Carr 15:59, 10 June 2007 (UTC)
This isn't a manual. It's not a case of "dumbing it down for the layman", it's a case of making it an interesting article, and technical guides do not make for interesting articles. The whole lot belongs on Wikibooks. Chris Cunningham 09:14, 12 June 2007 (UTC)
I fully agree that the details and examples in the integer math and string comparison sections are valid to be included in the article. I have promoted them from sub-secions under start up scripts to be main sections. Chris Cunningham - rather than the quick and easy edit to remove them all, why not take the time to summarize them, and add links to the appropriate articles with details. See test (Unix). --Unixguy 17:42, 11 June 2007 (UTC)
You're pointing to a transcoded man page as an example of a good article? That's the exact opposite of what we should be aiming for. Chris Cunningham 09:14, 12 June 2007 (UTC)
...Actually, having just gone and tried to "summarise" the stuff from the deleted sections that is actually useful to the article, I find that I already did take all the relevant bits and add them to the features section. So all that was deleted was the egrecious teach-yourself-unix shell scripting guide which specifically says it isn't bash-specific, and a couple of pages of example code. Not worth keeping. Chris Cunningham 09:48, 12 June 2007 (UTC)
Ok, after looking at the examples you removed more closely, it does appear that there is more detail than is needed for this article. I went ahead and placed the removed sections here on the talk page for future reference. --Unixguy 23:08, 13 June 2007 (UTC)
disagree Here is my vote if people feel like voting to find consensus. I do think that for this subject matter, the removed sections are relevant. Jeff Carr 20:31, 25 September 2007 (UTC)

[edit] Removed sections

Following are the removed tutorial sections. --Unixguy 23:03, 13 June 2007 (UTC)

I've moved these to Bash syntax and semantics as the content was handled in a similar way for Python syntax and semantics. Jeff Carr 00:02, 24 October 2007 (UTC)

[edit] The BASH' lack of simplification

The Bourne Again Shell has, during its long lifetime, gained several improvements and thus new programs. This has had as a result that to perform a same specific task, the user is bothered with a amount of overlapping programs.

Aldough Linux' self-correcting community might have resolved this earlier, as it is no longer actively used (now graphic interfaces are used instead) no corrections have been made for these flaws. Besides a large amount of overlapping programs, the command line interface has also a number of features which can be dismissed and replaced by other existing commands, hereby making a huge simplification possible.

Examples on this are:

  • viewing of a text file: this can be done by an excessive amount of programs as vi, pico, less, more, ...
  • the unnecessairy grep-command; instead locate with a specific option (thus locate -xx) can perform this function if locate is altered so it allows this
  • The unnecessairy possibility of using relative pathnames, this can be replaced by only allowing absolute pathnames
  • The unnecessairy pwd-command; instead the current directory can just be shown in the command line itself (similar as in DOS).
  • The unnecessairy append I/O redirection and piping option; instead of using append (>>) one can simply use overwrite (>) instead
  • The write permissions included with files should no longer include type-information (only gives extremely limited information and would be better checked with the filename-extension. Also, support for a sticky bit (-t permission) should be dropped. Thus instead of presenting eg drwxrw-rw- this would become rwxrw-rw-
  • The possible use of general points in folders (not being part of the extension) should be dropped. Thus folders named foo.bar etc can no longer be created. This has caused allot of confusion in the past.
  • Finally, commands as ls for listing folders, ... are best changed to list. Changing the commands to these makes it easier to remember them.

More suggestions may be found at My Blog's Linux Improvements-doc Hoping this article-segment will qualify for wikipedia, I have already implemented it into the BASH-article.

--KVDP 14:52, 9 September 2007 (UTC)--

Elimination of relative paths? grep unnecessary, just rewrite locate? pwd unnecessary? Remove append in favor of overwrite? Is this a joke? You're teasing. 74.64.85.88 16:11, 9 September 2007 (UTC)

Silly KVDP! Choice is what makes GNU/Linux so great. Following your train of thought I would guess that you think all cars should be the same color because there is no "need" for choice. I'll just stop there because I do not want to feed the troll any more. Donkdonk (talk) 20:42, 15 April 2008 (UTC)

[edit] Citations

The following papers

Contain a number of citations that could be added to this article. --BrianFennell (talk) 22:13, 28 May 2008 (UTC)