An environment is a collection of concepts that express the things a computer system or other set of tools does in terms designed to be understandable and coherent , and a look and feel that is comfortable. For example, your desk at work is an environment. Concepts involved in desk work usually include memos, phone calls, letters , forms, etc. The tools on or in your desk that you use to deal with these things include paper, staples , envelopes, pens, a telephone, a calculator, etc. Every one of these has a set of characteristics that express how you use it; such characteristics range from location on your desk or in a drawer (for simple tools) to more sophisticated things like which numbers the memory buttons on your phone are set to. Taken together, these characteristics make up your desk's look and feel.
You customize the look and feel of your desk environment by putting pens where you can most easily reach them, programming your phone buttons, etc. In general, the more customization you have done, the more tailored to your personal needs ”and therefore the more productive ”your environment is.
Similarly, UNIX shells present you with such concepts as files, directories, and standard input and output, while UNIX itself gives you tools to work with these, such as file manipulation commands, text editors, and print queues. Your UNIX environment's look and feel is determined by your keyboard and display, of course, but also by how you set up your directories, where you put each kind of file, and what names you give to files, directories, and commands. There are also more sophisticated ways of customizing your shell environment.
This chapter will look at the four most important features that bash provides for customizing your environment.
The files .bash_profile , .bash_logout , and .bashrc that are read by bash when you log in and out or start a new shell.
Synonyms for commands or command strings that you can define for convenience.
Controls for various aspects of your environment, which you can turn on and off.
Changeable values that are referred to by a name . The shell and other programs can modify their behavior according to the values stored in the variables.
Although these features are not the only ones available, they form the basis for doing more advanced customization. They are also the features that are common to the various shells available on UNIX. Later chapters will cover more advanced shell features, such as the ability to program the shell.