source: postlfs/config/profile.xml@ bd3510d

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.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 kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts krejzi/svn lazarus lxqt nosym perl-modules plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition systemd-11177 systemd-13485 trunk upgradedb xry111/intltool xry111/llvm18 xry111/soup3 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since bd3510d was 3597eb6, checked in by Randy McMurchy <randy@…>, 18 years ago

Added the 'User Notes' wiki link to each package page; changed all instances of .[so,a] to .{so,a} (brackets changed to braces); changed all replaceable tags to use angle brackets instead of square brackets to encapsulate the text - commit #7

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

  • Property mode set to 100644
File size: 22.6 KB
RevLine 
[f8d632a]1<?xml version="1.0" encoding="ISO-8859-1"?>
[ff769b8c]2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
3 "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
[f8d632a]4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6]>
7
[78b3cd61]8<sect1 id="postlfs-config-profile" xreflabel="The Bash Shell Startup Files">
[2753b70b]9 <?dbhtml filename="profile.html"?>
10
11 <sect1info>
12 <othername>$LastChangedBy$</othername>
13 <date>$Date$</date>
14 </sect1info>
15
16 <title>The Bash Shell Startup Files</title>
17
18 <para>The shell program <filename>/bin/bash</filename> (hereafter
19 referred to as just "the shell") uses a collection of startup files to
20 help create an environment. Each file has a specific use and
21 may affect login and interactive environments differently. The files in
[384039a]22 the <filename class="directory">/etc</filename> directory generally provide
[2753b70b]23 global settings. If an equivalent file exists in your home directory it may
24 override the global settings.</para>
25
26 <para>An interactive login shell is started after a successful login, using
[384039a]27 <filename>/bin/login</filename>, by reading the <filename>/etc/passwd</filename>
28 file. This shell invocation normally reads <filename>/etc/profile</filename>
29 and its private equivalent <filename>~/.bash_profile</filename> upon
[2753b70b]30 startup.</para>
31
32 <para>An interactive non-login shell is normally started at the command-line
[ba0deaad]33 using a shell program (e.g.,
34 <prompt>[prompt]$</prompt><command>/bin/bash</command>) or by the
[2753b70b]35 <command>/bin/su</command> command. An interactive non-login shell is also
36 started with a terminal program such as <command>xterm</command> or
37 <command>konsole</command> from within a graphical environment. This type of
38 shell invocation normally copies the parent environment and then reads the
39 user's <filename>~/.bashrc</filename> file for additional startup configuration
40 instructions.</para>
41
42 <para>A non-interactive shell is usually present when a shell script is
43 running. It is non-interactive because it is processing a script and not
44 waiting for user input between commands. For these shell invocations, only
45 the environment inherited from the parent shell is used.</para>
46
47 <para> The file <filename>~/.bash_logout</filename> is not used for an
48 invocation of the shell. It is read and executed when a user exits from an
49 interactive login shell.</para>
50
[a05dbe6]51 <para>Many distributions use <filename>/etc/bashrc</filename> for system wide
52 initialization of non-login shells. This file is usually called from the
53 user's <filename>~/.bashrc</filename> file and is not built directly into
54 <command>bash</command> itself. This convention is followed in this
55 section.</para>
[2753b70b]56
[384039a]57 <para>For more information see <command>info bash</command> --
[2753b70b]58 <emphasis role="strong">Nodes: Bash Startup Files and Interactive
[ba0deaad]59 Shells</emphasis>.</para>
60
61 <note>
62 <para>Most of the instructions below are used to create files located in
63 the <filename class='directory'>/etc</filename> directory structure which
64 requires you to execute the commands as the
65 <systemitem class='username'>root</systemitem> user. If you elect to create
66 the files in user's home directories instead, you should run the commands
67 as an unprivileged user.</para>
68 </note>
[2753b70b]69
70 <sect2 id="etc-profile-profile">
71 <title>/etc/profile</title>
72
73 <indexterm zone="postlfs-config-profile etc-profile-profile">
74 <primary sortas="e-etc-profile">/etc/profile</primary>
75 </indexterm>
76
77 <para>Here is a base <filename>/etc/profile</filename>. This file starts by
78 setting up some helper functions and some basic parameters. It specifies some
[ba0deaad]79 <command>bash</command> history parameters and, for security purposes,
[384039a]80 disables keeping a permanent history file for the <systemitem
[2753b70b]81 class="username">root</systemitem> user. It also sets a
82 default user prompt. It then calls small, single purpose scripts in the
83 <filename class='directory'>/etc/profile.d</filename> directory to provide most
[ba0deaad]84 of the initialization.</para>
[2753b70b]85
86 <para>For more information on the escape sequences you can use for your prompt
[ba0deaad]87 (i.e., the <envar>PS1</envar> environment variable) see <command>info
[2753b70b]88 bash</command> -- <emphasis role="strong">Node: Printing a
[ba0deaad]89 Prompt</emphasis>.</para>
[2753b70b]90
91<screen role="root"><userinput>cat &gt; /etc/profile &lt;&lt; "EOF"
92<literal># Begin /etc/profile
[b554263]93# Written for Beyond Linux From Scratch
94# by James Robertson &lt;jameswrobertson@earthlink.net&gt;
[1a396398]95# modifications by Dagmar d'Surreal &lt;rivyqntzne@pbzpnfg.arg&gt;
[384039a]96
[b554263]97# System wide environment variables and startup programs.
[384039a]98
[b554263]99# System wide aliases and functions should go in /etc/bashrc. Personal
100# environment variables and startup programs should go into
101# ~/.bash_profile. Personal aliases and functions should go into
102# ~/.bashrc.
[384039a]103
[1a396398]104# Functions to help us manage paths. Second argument is the name of the
105# path variable to be modified (default: PATH)
106pathremove () {
107 local IFS=':'
108 local NEWPATH
109 local DIR
110 local PATHVARIABLE=${2:-PATH}
111 for DIR in ${!PATHVARIABLE} ; do
112 if [ "$DIR" != "$1" ] ; then
113 NEWPATH=${NEWPATH:+$NEWPATH:}$DIR
114 fi
115 done
116 export $PATHVARIABLE="$NEWPATH"
[b554263]117}
[384039a]118
[1a396398]119pathprepend () {
120 pathremove $1 $2
121 local PATHVARIABLE=${2:-PATH}
122 export $PATHVARIABLE="$1${!PATHVARIABLE:+:${!PATHVARIABLE}}"
123}
[384039a]124
[1a396398]125pathappend () {
126 pathremove $1 $2
127 local PATHVARIABLE=${2:-PATH}
128 export $PATHVARIABLE="${!PATHVARIABLE:+${!PATHVARIABLE}:}$1"
129}
[384039a]130
[e9ef7b5e]131
132# Set the initial path
133export PATH=/bin:/usr/bin
134
[1a396398]135if [ $EUID -eq 0 ] ; then
[e9ef7b5e]136 pathappend /sbin:/usr/sbin
[1a396398]137 unset HISTFILE
[b554263]138fi
[384039a]139
[1a396398]140# Setup some environment variables.
141export HISTSIZE=1000
142export HISTIGNORE="&amp;:[bf]g:exit"
143#export PS1="[\u@\h \w]\\$ "
144export PS1='\u@\h:\w\$ '
[384039a]145
[1a396398]146for script in /etc/profile.d/*.sh ; do
[d3880c0]147 if [ -r $script ] ; then
[1a396398]148 . $script
149 fi
150done
[384039a]151
[99e8a229]152# Now to clean up
[384039a]153unset pathremove pathprepend pathappend
[1a396398]154
[2753b70b]155# End /etc/profile</literal>
156EOF</userinput></screen>
[1a396398]157
[2753b70b]158 <sect3 id="etc-profile.d">
159 <title>The /etc/profile.d Directory</title>
[99e8a229]160
[2753b70b]161 <indexterm zone="postlfs-config-profile etc-profile.d">
162 <primary sortas="e-etc-profile.d">/etc/profile.d</primary>
163 </indexterm>
[1a396398]164
[384039a]165 <para>Now create the <filename class='directory'>/etc/profile.d</filename>
[ba0deaad]166 directory, where the individual initialization scripts are placed:</para>
[1a396398]167
[2753b70b]168<screen role="root"><userinput>install --directory --mode=0755 --owner=root --group=root /etc/profile.d</userinput></screen>
[1a396398]169
[2753b70b]170 </sect3>
[1a396398]171
[2753b70b]172 <sect3 id="etc-profile.d-dircolors.sh">
173 <title>/etc/profile.d/dircolors.sh</title>
174
175 <indexterm zone="postlfs-config-profile etc-profile.d-dircolors.sh">
176 <primary sortas="e-etc-profile.d-dircolors.sh">/etc/profile.d/dircolors.sh</primary>
177 </indexterm>
178
179 <para>This script uses the <filename>~/.dircolors</filename> and
180 <filename>/etc/dircolors</filename> files to control the colors of file names in a
181 directory listing. They control colorized output of things like <command>ls
[ba0deaad]182 --color</command>. The explanation of how to initialize these files is at the
[2753b70b]183 end of this section.</para>
184
185<screen role="root"><userinput>cat &gt; /etc/profile.d/dircolors.sh &lt;&lt; "EOF"
186<literal># Setup for /bin/ls to support color, the alias is in /etc/bashrc.
[1a396398]187if [ -f "/etc/dircolors" ] ; then
188 eval $(dircolors -b /etc/dircolors)
[384039a]189
[1a396398]190 if [ -f "$HOME/.dircolors" ] ; then
191 eval $(dircolors -b $HOME/.dircolors)
192 fi
[b554263]193fi
[2753b70b]194alias ls='ls --color=auto'</literal>
195EOF</userinput></screen>
196
197 </sect3>
198
199 <sect3 id="extrapaths.sh">
200 <title>/etc/profile.d/extrapaths.sh</title>
201
202 <indexterm zone="postlfs-config-profile extrapaths.sh">
203 <primary sortas="e-etc-profile.d-extrapaths.sh">/etc/profile.d/extrapaths.sh</primary>
204 </indexterm>
205
206 <para>This script adds several useful paths to the <envar>PATH</envar> and
[384039a]207 <envar>PKG_CONFIG_PATH</envar> environment variables. If you want, you
208 can uncomment the last section to put a dot at the end of your path. This will
209 allow executables in the current working directory to be executed without
210 specifiying a ./, however you are warned that this is generally considered a
[2753b70b]211 security hazard.</para>
[384039a]212
[2753b70b]213<screen role="root"><userinput>cat &gt; /etc/profile.d/extrapaths.sh &lt;&lt; "EOF"
214<literal>if [ -d /usr/local/lib/pkgconfig ] ; then
[1a396398]215 pathappend /usr/local/lib/pkgconfig PKG_CONFIG_PATH
216fi
217if [ -d /usr/local/bin ]; then
218 pathprepend /usr/local/bin
[b554263]219fi
[1a396398]220if [ -d /usr/local/sbin -a $EUID -eq 0 ]; then
221 pathprepend /usr/local/sbin
222fi
[d3880c0]223for directory in $(find /opt/*/lib/pkgconfig -type d 2>/dev/null); do
[1a396398]224 pathappend $directory PKG_CONFIG_PATH
225done
[d3880c0]226for directory in $(find /opt/*/bin -type d 2>/dev/null); do
[1a396398]227 pathappend $directory
228done
229if [ -d ~/bin ]; then
230 pathprepend ~/bin
231fi
232#if [ $EUID -gt 99 ]; then
233# pathappend .
[2753b70b]234#fi</literal>
235EOF</userinput></screen>
236
237 </sect3>
238
239 <sect3 id="readline.sh">
240 <title>/etc/profile.d/readline.sh</title>
241
242 <indexterm zone="postlfs-config-profile readline.sh">
243 <primary sortas="e-etc-profile.d-readline.sh">/etc/profile.d/readline.sh</primary>
244 </indexterm>
245
[384039a]246 <para>This script sets up the default <filename>inputrc</filename>
247 configuration file. If the user does not have individual settings, it uses the
[2753b70b]248 global file.</para>
249
250<screen role="root"><userinput>cat &gt; /etc/profile.d/readline.sh &lt;&lt; "EOF"
251<literal># Setup the INPUTRC environment variable.
[b554263]252if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ] ; then
[1a396398]253 INPUTRC=/etc/inputrc
[b554263]254fi
[2753b70b]255export INPUTRC</literal>
256EOF</userinput></screen>
257
258 </sect3>
259
[3003aec]260 <!-- TODO: Remove tinker-term.sh when LFS stable has Ncurses-5.5 -->
[ec590c04]261
[2753b70b]262 <sect3 id="tinker-term.sh">
263 <title>/etc/profile.d/tinker-term.sh</title>
264
265 <indexterm zone="postlfs-config-profile tinker-term.sh">
266 <primary sortas="e-etc-profile.d-tinker-term.sh">/etc/profile.d/tinker-term.sh</primary>
267 </indexterm>
268
[384039a]269 <para>Some applications need a specific <envar>TERM</envar> setting to
[3003aec]270 support color. Starting with <application>Ncurses</application> version
271 5.5, the <filename>xterm</filename> terminal type contains color
272 capabilities by default. If you have this version or greater, the
273 <filename>tinker-term.sh</filename> script is unnecessary and should not
274 be installed.</para>
[2753b70b]275
276<screen role="root"><userinput>cat &gt; /etc/profile.d/tinker-term.sh &lt;&lt; "EOF"
[384039a]277<literal># This will tinker with the value of TERM in order to convince certain
[dd362e5]278# apps that we can, indeed, display color in their window.
[384039a]279
[1a396398]280if [ -n "$COLORTERM" ]; then
281 export TERM=xterm-color
282fi
[384039a]283
[1a396398]284if [ "$TERM" = "xterm" ]; then
285 export TERM=xterm-color
[2753b70b]286fi</literal>
287EOF</userinput></screen>
288
289 </sect3>
290
291 <sect3 id="umask.sh">
292 <title>/etc/profile.d/umask.sh</title>
293
294 <indexterm zone="postlfs-config-profile umask.sh">
295 <primary sortas="e-etc-profile.d-umask.sh">/etc/profile.d/umask.sh</primary>
296 </indexterm>
[384039a]297
298 <para>Setting the <command>umask</command> value is important for security.
299 Here the default group write permissions are turned off for system users and when
[2753b70b]300 the user name and group name are not the same.</para>
[b554263]301
[2753b70b]302<screen role="root"><userinput>cat &gt; /etc/profile.d/umask.sh &lt;&lt; "EOF"
303<literal># By default we want the umask to get set.
[1a396398]304if [ "$(id -gn)" = "$(id -un)" -a $EUID -gt 99 ] ; then
305 umask 002
306else
307 umask 022
[2753b70b]308fi</literal>
309EOF</userinput></screen>
310
311 </sect3>
312
313 <sect3 id="X.sh">
314 <title>/etc/profile.d/X.sh</title>
[1a396398]315
[2753b70b]316 <indexterm zone="postlfs-config-profile X.sh">
317 <primary sortas="e-etc-profile.d-X.sh">/etc/profile.d/X.sh</primary>
318 </indexterm>
[1a396398]319
[384039a]320 <para>If <application>X</application> is installed, the <envar>PATH</envar>
[2753b70b]321 and <envar>PKG_CONFIG_PATH</envar> variables are also updated.</para>
[1a396398]322
[2753b70b]323<screen role="root"><userinput>cat &gt; /etc/profile.d/X.sh &lt;&lt; "EOF"
324<literal>if [ -x /usr/X11R6/bin/X ]; then
[1a396398]325 pathappend /usr/X11R6/bin
326fi
327if [ -d /usr/X11R6/lib/pkgconfig ] ; then
328 pathappend /usr/X11R6/lib/pkgconfig PKG_CONFIG_PATH
[2753b70b]329fi</literal>
330EOF</userinput></screen>
331
332 </sect3>
333
[683e848a]334 <sect3 id="extra-prompt.sh">
335 <title>/etc/profile.d/extra-prompt.sh</title>
[2753b70b]336
[683e848a]337 <indexterm zone="postlfs-config-profile extra-prompt.sh">
338 <primary sortas="e-etc-profile.d-prompt.sh">/etc/profile.d/extra-prompt.sh</primary>
[2753b70b]339 </indexterm>
340
[683e848a]341 <para>This script shows an example of a different way of setting the
342 prompt. The normal variable, <envar>PS1</envar>, is supplemented by
[384039a]343 <envar>PROMPT_COMMAND</envar>. If set, the value of
[683e848a]344 <envar>PROMPT_COMMAND</envar> is executed as a command prior to issuing
345 each primary prompt. The sequence \e is an ESC character. \a is a
[ba0deaad]346 BEL character. For a reference on <command>xterm</command> escape
347 sequences, see <ulink
348 url="http://rtfm.etla.org/xterm/ctlseq.html"/>.</para>
[683e848a]349
350<screen role="root"><userinput>cat &gt; /etc/profile.d/extra-prompt.sh &lt;&lt; "EOF"
[06833a4a]351<literal>PROMPT_COMMAND='echo -ne "\e[1m${USER}@${HOSTNAME} : ${PWD}\e[0m\a"'
[683e848a]352export PROMPT_COMMAND</literal>
[2753b70b]353EOF</userinput></screen>
354
[683e848a]355 <para>The escape sequences above are BOLD, NORMAL, and BEL.</para>
356
[2753b70b]357 </sect3>
358
359 <sect3 id="i18n.sh">
[384039a]360 <title>'/etc/profile.d/i18n.sh'</title>
[2753b70b]361
362 <indexterm zone="postlfs-config-profile i18n.sh">
363 <primary sortas="e-etc-profile.d-i18n.sh">/etc/profile.d/i18n.sh</primary>
364 </indexterm>
365
[384039a]366 <para>This script shows how to set some environment variables necessary for
367 native language support. Setting these variables properly gives you:</para>
[2753b70b]368
369 <itemizedlist>
370 <listitem>
371 <para>the output of programs translated into your native language</para>
372 </listitem>
373 <listitem>
[384039a]374 <para>correct classification of characters into letters, digits and
375 other classes &ndash; this is necessary for <application>Bash</application>
[2753b70b]376 to accept keystrokes properly in non-English locales</para>
377 </listitem>
378 <listitem>
379 <para>the alphabetical sorting order correct for your country</para>
380 </listitem>
381 <listitem>
382 <para>proper default paper size</para>
383 </listitem>
384 <listitem>
385 <para>correct formatting of monetary, time and date values</para>
386 </listitem>
387 </itemizedlist>
388
[3597eb6]389 <para>Replace <replaceable>&lt;ll&gt;</replaceable> with the two-letter code for
[384039a]390 your language (e.g., <quote>en</quote>) and
[3597eb6]391 <replaceable>&lt;CC&gt;</replaceable> with the two-letter code for your country
[384039a]392 (e.g., <quote>GB</quote>). Also you may need to specify (and this is actually
393 the preferred form) your character encoding (e.g., <quote>iso8859-1</quote>)
394 after a dot (so that the result is <quote>en_GB.iso8859-1</quote>). Issue the
[2753b70b]395 following command for more information:</para>
396
397<screen><userinput>man 3 setlocale</userinput></screen>
398
[384039a]399 <para>The list of all locales supported by <application>Glibc</application>
[2753b70b]400 can be obtained by running the following command:</para>
401
[384039a]402<screen><userinput>locale -a</userinput></screen>
403
404 <para>After you are sure about your locale settings, create the
405 <filename>/etc/profile.d/i18n.sh</filename> file:</para>
[2753b70b]406
407<screen role="root"><userinput>cat &gt; /etc/profile.d/i18n.sh &lt;&lt; "EOF"
408<literal># Set up i18n variables
[3597eb6]409export LC_ALL=<replaceable>&lt;ll&gt;</replaceable>_<replaceable>&lt;CC&gt;</replaceable>
410export LANG=<replaceable>&lt;ll&gt;</replaceable>_<replaceable>&lt;CC&gt;</replaceable>
[2753b70b]411export G_FILENAME_ENCODING=@locale</literal>
412EOF</userinput></screen>
413
[384039a]414 <para>The <envar>LC_ALL</envar> variable sets the same value for all locale
415 categories. For better control, you may prefer to set values individually for
416 all categories listed in the output of the <command>locale</command>
[2753b70b]417 command.</para>
418
419 <para>The <envar>G_FILENAME_ENCODING</envar> variable tells applications
[384039a]420 such as <application>Glib</application> and <application>GTK+</application>
[2753b70b]421 that filenames are in the default locale encoding and not in UTF-8 as
422 assumed by default.</para>
423
424 </sect3>
425
426 <sect3>
427 <title>Other Initialization Values</title>
428
[384039a]429 <para>Other initialization can easily be added to the
430 <filename>profile</filename> by adding additional scripts to the
[2753b70b]431 <filename class='directory'>/etc/profile.d</filename> directory.</para>
432
433 </sect3>
434
435 </sect2>
436
437 <sect2 id="etc-bashrc-profile">
438 <title>/etc/bashrc</title>
439
440 <indexterm zone="postlfs-config-profile etc-bashrc-profile">
441 <primary sortas="e-etc-bashrc">/etc/bashrc</primary>
442 </indexterm>
443
444 <para>Here is a base <filename>/etc/bashrc</filename>. Comments in the
445 file should explain everything you need.</para>
446
447<screen role="root"><userinput>cat &gt; /etc/bashrc &lt;&lt; "EOF"
[384039a]448<literal># Begin /etc/bashrc
449# Written for Beyond Linux From Scratch
[b554263]450# by James Robertson &lt;jameswrobertson@earthlink.net&gt;
[ad33bab6]451# updated by Bruce Dubbs &lt;bdubbs@linuxfromscratch.org&gt;
452
453# Make sure that the terminal is set up properly for each shell
454
455if [ -f /etc/profile.d/tinker-term.sh ]; then
456 source /etc/profile.d/tinker-term.sh
457fi
458
[b554263]459# System wide aliases and functions.
460
461# System wide environment variables and startup programs should go into
462# /etc/profile. Personal environment variables and startup programs
463# should go into ~/.bash_profile. Personal aliases and functions should
464# go into ~/.bashrc
465
466# Provides a colored /bin/ls command. Used in conjunction with code in
467# /etc/profile.
[1a396398]468
[b554263]469alias ls='ls --color=auto'
470
[1a396398]471# Provides prompt for non-login shells, specifically shells started
[2753b70b]472# in the X environment. [Review the LFS archive thread titled
[384039a]473# PS1 Environment Variable for a great case study behind this script
[dd362e5]474# addendum.]
[1a396398]475
[3383489]476#export PS1="[\u@\h \w]\\$ "
477export PS1='\u@\h:\w\$ '
[28a9992]478
[2753b70b]479# End /etc/bashrc</literal>
480EOF</userinput></screen>
481
482 </sect2>
483
484 <sect2 id="bash_profile-profile">
485 <title>~/.bash_profile</title>
486
487 <indexterm zone="postlfs-config-profile bash_profile-profile">
488 <primary sortas="e-AA.bash_profile">~/.bash_profile</primary>
489 </indexterm>
490
491 <para>Here is a base <filename>~/.bash_profile</filename>. If you want each
492 new user to have this file automatically, just change the output of
493 the command to <filename>/etc/skel/.bash_profile</filename> and check the
494 permissions after the command is run. You can then copy
495 <filename>/etc/skel/.bash_profile</filename> to the home directories of already
[384039a]496 existing users, including <systemitem class="username">root</systemitem>,
[2753b70b]497 and set the owner and group appropriately.</para>
498
499<screen><userinput>cat &gt; ~/.bash_profile &lt;&lt; "EOF"
500<literal># Begin ~/.bash_profile
[b554263]501# Written for Beyond Linux From Scratch
502# by James Robertson &lt;jameswrobertson@earthlink.net&gt;
[1a396398]503# updated by Bruce Dubbs &lt;bdubbs@linuxfromscratch.org&gt;
[b554263]504
[64d97b7c]505# Personal environment variables and startup programs.
[b554263]506
507# Personal aliases and functions should go in ~/.bashrc. System wide
508# environment variables and startup programs are in /etc/profile.
509# System wide aliases and functions are in /etc/bashrc.
510
[1a396398]511append () {
512 # First remove the directory
513 local IFS=':'
514 local NEWPATH
515 for DIR in $PATH; do
516 if [ "$DIR" != "$1" ]; then
[3f1b51a]517 NEWPATH=${NEWPATH:+$NEWPATH:}$DIR
[384039a]518 fi
[1a396398]519 done
[384039a]520
[1a396398]521 # Then append the directory
522 export PATH=$NEWPATH:$1
523}
524
[b554263]525if [ -f "$HOME/.bashrc" ] ; then
[7008de1]526 source $HOME/.bashrc
[b554263]527fi
528
529if [ -d "$HOME/bin" ] ; then
[384039a]530 append $HOME/bin
[b554263]531fi
532
[1a396398]533unset append
[b554263]534
[2753b70b]535# End ~/.bash_profile</literal>
536EOF</userinput></screen>
537
538 </sect2>
[384039a]539
[2753b70b]540 <sect2 id="bashrc-profile">
541 <title>~/.bashrc</title>
542
543 <indexterm zone="postlfs-config-profile bashrc-profile">
544 <primary sortas="e-AA.bashrc">~/.bashrc</primary>
545 </indexterm>
546
547 <para>Here is a base <filename>~/.bashrc</filename>. The comments and
548 instructions for using <filename class="directory">/etc/skel</filename> for
549 <filename>.bash_profile</filename> above also apply here. Only the target file
550 names are different.</para>
551
552<screen><userinput>cat &gt; ~/.bashrc &lt;&lt; "EOF"
553<literal># Begin ~/.bashrc
[b554263]554# Written for Beyond Linux From Scratch
555# by James Robertson &lt;jameswrobertson@earthlink.net&gt;
556
557# Personal aliases and functions.
558
559# Personal environment variables and startup programs should go in
[64d97b7c]560# ~/.bash_profile. System wide environment variables and startup
[b554263]561# programs are in /etc/profile. System wide aliases and functions are
[384039a]562# in /etc/bashrc.
[b554263]563
564if [ -f "/etc/bashrc" ] ; then
[7008de1]565 source /etc/bashrc
[b554263]566fi
567
[2753b70b]568# End ~/.bashrc</literal>
569EOF</userinput></screen>
570
571 </sect2>
[384039a]572
573
[2753b70b]574 <sect2 id="bash_logout-profile">
575 <title>~/.bash_logout</title>
576
577 <indexterm zone="postlfs-config-profile bash_logout-profile">
578 <primary sortas="e-AA.bash_logout">~/.bash_logout</primary>
579 </indexterm>
580
581 <para>This is an empty <filename>~/.bash_logout</filename> that can be used as
582 a template. You will notice that the base <filename>~/.bash_logout</filename>
583 does not include a <userinput>clear</userinput> command. This is because the
584 clear is handled in the <filename>/etc/issue</filename> file.</para>
585
586<screen><userinput>cat &gt; ~/.bash_logout &lt;&lt; "EOF"
587<literal># Begin ~/.bash_logout
[b554263]588# Written for Beyond Linux From Scratch
589# by James Robertson &lt;jameswrobertson@earthlink.net&gt;
590
591# Personal items to perform on logout.
592
[2753b70b]593# End ~/.bash_logout</literal>
594EOF</userinput></screen>
595
596 </sect2>
[384039a]597
598
[2753b70b]599 <sect2 id="etc-dircolors-profile">
600 <title>/etc/dircolors</title>
601
602 <indexterm zone="postlfs-config-profile etc-dircolors-profile">
603 <primary sortas="e-etc-dircolors">/etc/dircolors</primary>
604 </indexterm>
605
606 <indexterm zone="postlfs-config-profile etc-dircolors-profile">
607 <primary sortas="e-AA.dircolors">~/.dircolors</primary>
608 </indexterm>
609
610 <para> If you want to use the <filename>dircolors</filename> capability, then
611 run the following command. The <filename class="directory">/etc/skel</filename>
[ba0deaad]612 setup steps shown above also can be used here to provide a
[384039a]613 <filename>~/.dircolors</filename> file when a new user is set up. As before,
[2753b70b]614 just change the output file name on the following command and assure the
[384039a]615 permissions, owner, and group are correct on the files created and/or
[2753b70b]616 copied.</para>
617
618<screen role="root"><userinput>dircolors -p > /etc/dircolors</userinput></screen>
619
620 <para>If you wish to customize the colors used for different file types, you can
[384039a]621 edit the <filename>/etc/dircolors</filename> file. The instructions for setting
[2753b70b]622 the colors are embedded in the file.</para>
623
624
625 <para>Finally, Ian Macdonald has written an excellent collection of tips and
626 tricks to enhance your shell environment. You can read it online at
[ba0deaad]627 <ulink url="http://www.caliban.org/bash/index.shtml"/>.</para>
[2753b70b]628
629 </sect2>
630
[b554263]631</sect1>
Note: See TracBrowser for help on using the repository browser.