Difference between revisions of "Bash"
Line 6: | Line 6: | ||
at the prompt. (rimshot) | at the prompt. (rimshot) | ||
+ | |||
+ | =Programming= | ||
+ | |||
+ | See also [http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html the BASH Programming - Introduction HOWTO]. | ||
+ | |||
+ | ==For== | ||
+ | |||
+ | Bash for loops are a little tricky. The general form is | ||
+ | |||
+ | for i in $( ls ); do | ||
+ | echo item: $i | ||
+ | done | ||
+ | |||
+ | That's how to run a command for every (normal) file in the directory. If you want to make an array yourself, instead of using the lines of a program, that's | ||
+ | |||
+ | for i in {alpha,beta,gamma}; do | ||
+ | echo item: $i | ||
+ | done | ||
=Startup files= | =Startup files= |
Revision as of 16:05, 2 June 2005
Contents
Attention Feminazis
If you are an overzealous feminist and seek documentation for the Bourne Again Shell, type
man bash
at the prompt. (rimshot)
Programming
See also the BASH Programming - Introduction HOWTO.
For
Bash for loops are a little tricky. The general form is
for i in $( ls ); do echo item: $i done
That's how to run a command for every (normal) file in the directory. If you want to make an array yourself, instead of using the lines of a program, that's
for i in {alpha,beta,gamma}; do echo item: $i done
Startup files
You generally have a choice between .bashrc (see also rc file), .bash_profile, .profile, /etc/profile, et cetera. Here's the gist of what the man basher has to say:
As a login shell
Running as a login shell, bash will always source /etc/profile (if it exists). Then, it selects the first readable file in this order and sources it:
- ~/.bash_profile
- ~/.bash_login
- ~/.profile
Starting login bash with --noprofile
makes it skip both /etc/profile and the local profiles.
Incidentally, bash will source ~/.bash_logout upon your logout if it exists.
As a non-login shell
Running as a non-login shell, bash will run ~/.bashrc if it exists. --norc
will make it skip the rc file altogether; --rcfile filename
will make it source another file instead of ~/.bashrc.