source: postlfs/config/profile.xml@ bae6e15

10.0 10.1 11.0 6.0 6.1 6.2 6.2.0 6.2.0-rc1 6.2.0-rc2 6.3 6.3-rc1 6.3-rc2 6.3-rc3 7.10 7.4 7.5 7.6 7.6-blfs 7.6-systemd 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 9.0 9.1 basic bdubbs/svn elogind gnome kde5-13430 kde5-14269 kde5-14686 ken/refactor-virt krejzi/svn lazarus nosym perl-modules qt5new systemd-11177 systemd-13485 trunk v5_1 v5_1-pre1 xry111/git-date xry111/git-date-for-trunk xry111/git-date-test
Last change on this file since bae6e15 was bae6e15, checked in by Larry Lawrence <larry@…>, 17 years ago

fix xsl chunk error in PostLFS section

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@2105 af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 8.7 KB
Line 
1<sect1 id="postlfs-config-profile" xreflabel="The Bash Shell Startup Files">
2<?dbhtml filename="profile.html"?>
3<title>The Bash Shell Startup Files</title>
4
5<para>The shell program <filename>/bin/bash</filename> (hereafter
6referred to as just "the shell") uses a collection of startup files to
7help create an environment to run in. Each file has a specific use and
8may affect login and interactive environments differently. The files in
9the <filename class="directory">/etc</filename> directory generally provide global
10settings. If an equivalent file exists in your home directory it may
11override the global settings.
12</para>
13
14<para>An interactive login shell is started after a successful login, using
15<filename>/bin/login</filename>, by reading the
16<filename>/etc/passwd</filename> file. An
17interactive non-login shell is started at the command-line (e.g.
18<prompt>[prompt]$</prompt><command>/bin/bash</command>). A non-interactive
19shell is usually present when a shell script is running. It is non-interactive
20because it is processing a script and not waiting for user input between
21commands.</para>
22
23<para>For more information see <command>info bash</command> --
24<emphasis role="strong">Nodes: Bash Startup Files and Interactive
25Shells.</emphasis></para>
26
27<para>The following files are used to make sure that the correct
28environment is established for each of the ways the shell can be invoked:
29<filename>/etc/profile</filename> and its private equivalent
30<filename>~/.bash_profile</filename>, and
31<filename>/etc/bashrc</filename> (unofficial) and its private equivalent
32<filename>~/.bashrc</filename>.
33</para>
34
35<para>
36The file <filename>~/.bash_logout</filename> is not used for an
37invocation of the shell. It is read by the shell when a user logs out
38of the system.</para>
39
40<para>The files <filename>/etc/profile</filename> and
41<filename>~/.bash_profile</filename> are read when the shell is invoked
42as an interactive login shell. The file <filename>~/.bashrc</filename>
43is read when the shell is invoked as an interactive non-login
44shell and it reads <filename>/etc/bashrc</filename> if it exists</para>
45
46<para>Also useful are the <filename>/etc/dircolors</filename> and
47<filename>~/.dircolors</filename> files called from
48<filename>/etc/profile</filename>. They control colorized output of
49things like <command>ls --color</command>.
50</para>
51
52<para>Here is a base <filename>/etc/profile</filename>. Comments in the
53file should explain everything you need. For more information on the
54escape sequences you can use for your prompt (e.g. the
55<envar>PS1</envar> environment variable) see <command>info
56bash</command> -- <emphasis role="strong">Node: Printing a
57Prompt.</emphasis></para>
58
59<screen><userinput><command>cat &gt; /etc/profile &lt;&lt; "EOF"</command>
60# Begin /etc/profile
61# Written for Beyond Linux From Scratch
62# by James Robertson &lt;jameswrobertson@earthlink.net&gt;
63
64# System wide environment variables and startup programs.
65
66# System wide aliases and functions should go in /etc/bashrc. Personal
67# environment variables and startup programs should go into
68# ~/.bash_profile. Personal aliases and functions should go into
69# ~/.bashrc.
70
71# Function to help us manage paths
72pathman () {
73 if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
74 if [ "$2" = "last" ] ; then
75 PATH=$PATH:$1
76 else
77 PATH=$1:$PATH
78 fi
79 fi
80}
81
82# Add to the standard path.
83if [ $(id -u) = 0 ] ; then
84 if [ -d "/usr/local/sbin" ] ; then
85 pathman /usr/local/sbin last
86 fi
87fi
88
89if [ $(id -u) != 0 ] ; then
90 if [ -d "/usr/local/bin" ] ; then
91 pathman /usr/local/bin last
92 fi
93fi
94
95if [ -d "/usr/X11R6/bin" ] ; then
96 pathman /usr/X11R6/bin last
97fi
98
99# Setup some environment variables.
100HISTSIZE=1000
101HISTIGNORE="&amp;:[bf]g:exit"
102PS1="[\u@\h \w]\\$ "
103
104# Setup the INPUTRC environment variable.
105if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ] ; then
106 INPUTRC=/etc/inputrc
107fi
108
109# Setup for /bin/ls to support color, the alias is in /etc/bashrc.
110if [ -f "/etc/dircolors" ] ; then
111 eval $(dircolors -b /etc/dircolors)
112
113 if [ -f "$HOME/.dircolors" ] ; then
114 eval $(dircolors -b $HOME/.dircolors)
115 fi
116fi
117
118export PATH HISTSIZE HISTIGNORE PS1 LS_COLORS INPUTRC
119
120# End /etc/profile
121<command>EOF</command></userinput></screen>
122
123<para>Here is a base <filename>/etc/bashrc</filename>. Comments in the
124file should explain everything you need.</para>
125
126<screen><userinput><command>cat &gt; /etc/bashrc &lt;&lt; "EOF"</command>
127# Begin /etc/bashrc
128# Written for Beyond Linux From Scratch
129# by James Robertson &lt;jameswrobertson@earthlink.net&gt;
130
131# System wide aliases and functions.
132
133# System wide environment variables and startup programs should go into
134# /etc/profile. Personal environment variables and startup programs
135# should go into ~/.bash_profile. Personal aliases and functions should
136# go into ~/.bashrc
137
138# By default we want the umask to get set.
139# Even for non-interactive and non-login shells.
140if [ "$(id -gn)" = "$(id -un)" -a $(id -u) -gt 99 ] ; then
141 umask 002
142else
143 umask 022
144fi
145
146# Provides a colored /bin/ls command. Used in conjunction with code in
147# /etc/profile.
148alias ls='ls --color=auto'
149
150# Provides prompt for non-interactive shells, specifically shells started
151# in the xfree environment. [Review archive thread titled PS1
152# Environment Variable for a great case study behind this script
153# addendum.]
154export PS1="[\u@\h \w]\\$ "
155
156# End /etc/bashrc
157<command>EOF</command></userinput></screen>
158
159<para>Here is a base <filename>~/.bash_profile</filename>. Comments in
160the file should explain everything you need. If you want each new user
161to have this file automatically provided, just change the output of the
162next command to <filename>/etc/skel/.bash_profile</filename> and check the
163permissions after the command is run. You can then copy
164<filename>/etc/skel/.bash_profile</filename> to the home directories of
165already existing users, including root, and set the owner and group
166appropriately.
167</para>
168
169<screen><userinput><command>cat &gt; ~/.bash_profile &lt;&lt; "EOF"</command>
170# Begin ~/.bash_profile
171# Written for Beyond Linux From Scratch
172# by James Robertson &lt;jameswrobertson@earthlink.net&gt;
173
174# Personal environment variables and startup programs.
175
176# Personal aliases and functions should go in ~/.bashrc. System wide
177# environment variables and startup programs are in /etc/profile.
178# System wide aliases and functions are in /etc/bashrc.
179
180if [ -f "$HOME/.bashrc" ] ; then
181 source $HOME/.bashrc
182fi
183
184if [ -d "$HOME/bin" ] ; then
185 pathman $HOME/bin last
186fi
187
188export PATH
189
190# End ~/.bash_profile
191<command>EOF</command></userinput></screen>
192
193<para>Here is a base <filename>~/.bashrc</filename>. Comments in the
194file should explain everything you need. The comments and
195instructions for using <filename class="directory">/etc/skel</filename> for
196<filename>.bash_profile</filename> above also apply here. Only the
197target file names are different.</para>
198
199<screen><userinput><command>cat &gt; ~/.bashrc &lt;&lt; "EOF"</command>
200# Begin ~/.bashrc
201# Written for Beyond Linux From Scratch
202# by James Robertson &lt;jameswrobertson@earthlink.net&gt;
203
204# Personal aliases and functions.
205
206# Personal environment variables and startup programs should go in
207# ~/.bash_profile. System wide environment variables and startup
208# programs are in /etc/profile. System wide aliases and functions are
209# in /etc/bashrc.
210
211if [ -f "/etc/bashrc" ] ; then
212 source /etc/bashrc
213fi
214
215# End ~/.bashrc
216<command>EOF</command></userinput></screen>
217
218<para>Here is a base <filename>~/.bash_logout</filename>. Comments in
219the file should explain everything you need. You will notice that the
220base <filename>~/.bash_logout</filename> does not include a
221<userinput>clear</userinput> command. This is because the clear is
222handled in the <filename>/etc/issue</filename> file.</para>
223
224<screen><userinput><command>cat &gt; ~/.bash_logout &lt;&lt; "EOF"</command>
225# Begin ~/.bash_logout
226# Written for Beyond Linux From Scratch
227# by James Robertson &lt;jameswrobertson@earthlink.net&gt;
228
229# Personal items to perform on logout.
230
231# End ~/.bash_logout
232<command>EOF</command></userinput></screen>
233
234<para>
235If you want to use the <filename>dircolors</filename> capability
236then run the following command. The <filename class="directory">/etc/skel</filename> setup
237steps seen above also can be used here to provide a
238<filename>.dircolors</filename> file when a new user is set up. As
239before, just change the output file name on the following command and
240assure the permissions, owner and group are correct on the files created
241and/or copied.
242</para>
243
244<para>
245<userinput><command>dircolors -p > /etc/dircolors</command></userinput>
246</para>
247
248<para>Ian Macdonald has written an excellent collection of tips and
249tricks to enhance your shell environment. You can read it online at
250<ulink
251url="http://www.caliban.org/bash/index.shtml">http://www.caliban.org/bash/index.shtml</ulink></para>
252
253</sect1>
Note: See TracBrowser for help on using the repository browser.