source: postlfs/config/profile.xml@ e2de81fd

11.3 12.0 12.1 kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts lazarus lxqt plabs/newcss python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition trunk xry111/llvm18 xry111/xf86-video-removal
Last change on this file since e2de81fd was b59e5eb3, checked in by David Bryant <davidbryant@…>, 19 months ago

Fixed a common misspelling. "setup" is a noun. When "set up" is a
phrasal verb, it is spelled as two words. This commit fixes most of
the misspelled "set up" instances in the BLFS book.

  • Property mode set to 100644
File size: 23.1 KB
RevLine 
[f8d632a]1<?xml version="1.0" encoding="ISO-8859-1"?>
[6732c094]2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/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
12 <title>The Bash Shell Startup Files</title>
13
[81a73ed8]14 <para>
15 The shell program <filename>/bin/bash</filename> (hereafter referred to
16 as just "the shell") uses a collection of startup files to help create
17 an environment. Each file has a specific use and may affect login and
18 interactive environments differently. The files in the <filename
19 class="directory">/etc</filename> directory generally provide global
20 settings. If an equivalent file exists in your home directory it may
21 override the global settings.
22 </para>
23
24 <para>
25 An interactive login shell is started after a successful login, using
26 <filename>/bin/login</filename>, by reading the
27 <filename>/etc/passwd</filename> file. This shell invocation normally reads
28 <filename>/etc/profile</filename> and its private equivalent
29 <filename>~/.bash_profile</filename> (or <filename>~/.profile</filename>
30 if called as <command>/bin/sh</command>) upon startup.
[8558044]31 </para>
[81a73ed8]32
33 <para>
34 An interactive non-login shell is normally started at the command-line
35 using a shell program (e.g.,
36 <prompt>[prompt]$</prompt><command>/bin/bash</command>) or by the
37 <command>/bin/su</command> command. An interactive non-login shell is also
38 started with a terminal program such as <command>xterm</command> or
39 <command>konsole</command> from within a graphical environment. This type
40 of shell invocation normally copies the parent environment and then reads
41 the user's <filename>~/.bashrc</filename> file for additional startup
42 configuration instructions.
43 </para>
44
45 <para>
46 A non-interactive shell is usually present when a shell script is
47 running. It is non-interactive because it is processing a script and not
48 waiting for user input between commands. For these shell invocations, only
49 the environment inherited from the parent shell is used.
50 </para>
51
52 <para>
53 The file <filename>~/.bash_logout</filename> is not used for an
54 invocation of the shell. It is read and executed when a user exits from an
55 interactive login shell.
56 </para>
57
58 <para>
59 Many distributions use <filename>/etc/bashrc</filename> for system wide
60 initialization of non-login shells. This file is usually called from the
61 user's <filename>~/.bashrc</filename> file and is not built directly into
62 <command>bash</command> itself. This convention is followed in this
63 section.
64 </para>
65
66 <para>
67 For more information see <command>info bash</command> --
68 <emphasis role="strong">Nodes: Bash Startup Files and Interactive
69 Shells</emphasis>.
70 </para>
[ba0deaad]71
72 <note>
[81a73ed8]73 <para>
74 Most of the instructions below are used to create files located in the
75 <filename class='directory'>/etc</filename> directory structure which
76 requires you to execute the commands as the <systemitem
77 class='username'>root</systemitem> user. If you elect to create the
78 files in user's home directories instead, you should run the commands
79 as an unprivileged user.
80 </para>
[ba0deaad]81 </note>
[2753b70b]82
[81a73ed8]83 <para condition="html" role="usernotes">User Notes:
84 <ulink url="&blfs-wiki;/bash-shell-startup-files"/></para>
[5c3f3856]85
[2753b70b]86 <sect2 id="etc-profile-profile">
87 <title>/etc/profile</title>
88
89 <indexterm zone="postlfs-config-profile etc-profile-profile">
90 <primary sortas="e-etc-profile">/etc/profile</primary>
91 </indexterm>
92
[81a73ed8]93 <para>
94 Here is a base <filename>/etc/profile</filename>. This file starts by
95 setting up some helper functions and some basic parameters. It specifies
96 some <command>bash</command> history parameters and, for security
97 purposes, disables keeping a permanent history file for the <systemitem
98 class="username">root</systemitem> user. It also sets a default user
99 prompt. It then calls small, single purpose scripts in the <filename
100 class='directory'>/etc/profile.d</filename> directory to provide most
101 of the initialization.
102 </para>
103
104 <para>
105 For more information on the escape sequences you can use for your prompt
106 (i.e., the <envar>PS1</envar> environment variable) see <command>info
107 bash</command> -- <emphasis role="strong">Node: Printing a
108 Prompt</emphasis>.
109 </para>
[2753b70b]110
[8e37798]111<screen role="root"><?dbfo keep-together="auto"?><userinput>cat &gt; /etc/profile &lt;&lt; "EOF"
[2753b70b]112<literal># Begin /etc/profile
[b554263]113# Written for Beyond Linux From Scratch
114# by James Robertson &lt;jameswrobertson@earthlink.net&gt;
[1a396398]115# modifications by Dagmar d'Surreal &lt;rivyqntzne@pbzpnfg.arg&gt;
[384039a]116
[b554263]117# System wide environment variables and startup programs.
[384039a]118
[b554263]119# System wide aliases and functions should go in /etc/bashrc. Personal
120# environment variables and startup programs should go into
121# ~/.bash_profile. Personal aliases and functions should go into
122# ~/.bashrc.
[384039a]123
[1a396398]124# Functions to help us manage paths. Second argument is the name of the
125# path variable to be modified (default: PATH)
126pathremove () {
127 local IFS=':'
128 local NEWPATH
129 local DIR
130 local PATHVARIABLE=${2:-PATH}
131 for DIR in ${!PATHVARIABLE} ; do
132 if [ "$DIR" != "$1" ] ; then
133 NEWPATH=${NEWPATH:+$NEWPATH:}$DIR
134 fi
135 done
136 export $PATHVARIABLE="$NEWPATH"
[b554263]137}
[384039a]138
[1a396398]139pathprepend () {
140 pathremove $1 $2
141 local PATHVARIABLE=${2:-PATH}
142 export $PATHVARIABLE="$1${!PATHVARIABLE:+:${!PATHVARIABLE}}"
143}
[384039a]144
[1a396398]145pathappend () {
146 pathremove $1 $2
147 local PATHVARIABLE=${2:-PATH}
148 export $PATHVARIABLE="${!PATHVARIABLE:+${!PATHVARIABLE}:}$1"
149}
[384039a]150
[ec7940be]151export -f pathremove pathprepend pathappend
[e9ef7b5e]152
153# Set the initial path
[b149d10]154export PATH=/usr/bin
155
156# Attempt to provide backward compatibility with LFS earlier than 11
157if [ ! -L /bin ]; then
158 pathappend /bin
159fi
[e9ef7b5e]160
[1a396398]161if [ $EUID -eq 0 ] ; then
[b149d10]162 pathappend /usr/sbin
163 if [ ! -L /sbin ]; then
164 pathappend /sbin
165 fi
[1a396398]166 unset HISTFILE
[b554263]167fi
[384039a]168
[b59e5eb3]169# Set up some environment variables.
[1a396398]170export HISTSIZE=1000
171export HISTIGNORE="&amp;:[bf]g:exit"
[0d7ec6f1]172
[97c713e]173# Set some defaults for graphical systems
[caee7667]174export XDG_DATA_DIRS=${XDG_DATA_DIRS:-/usr/share/}
175export XDG_CONFIG_DIRS=${XDG_CONFIG_DIRS:-/etc/xdg/}
176export XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR:-/tmp/xdg-$USER}
[97c713e]177
[b59e5eb3]178# Set up a red prompt for root and a green one for users.
[0d7ec6f1]179NORMAL="\[\e[0m\]"
180RED="\[\e[1;31m\]"
181GREEN="\[\e[1;32m\]"
182if [[ $EUID == 0 ]] ; then
183 PS1="$RED\u [ $NORMAL\w$RED ]# $NORMAL"
184else
185 PS1="$GREEN\u [ $NORMAL\w$GREEN ]\$ $NORMAL"
186fi
[384039a]187
[1a396398]188for script in /etc/profile.d/*.sh ; do
[d3880c0]189 if [ -r $script ] ; then
[1a396398]190 . $script
191 fi
192done
[384039a]193
[f91e4b98]194unset script RED GREEN NORMAL
[dc53944]195
[2753b70b]196# End /etc/profile</literal>
197EOF</userinput></screen>
[1a396398]198
[2753b70b]199 <sect3 id="etc-profile.d">
200 <title>The /etc/profile.d Directory</title>
[99e8a229]201
[2753b70b]202 <indexterm zone="postlfs-config-profile etc-profile.d">
203 <primary sortas="e-etc-profile.d">/etc/profile.d</primary>
204 </indexterm>
[1a396398]205
[81a73ed8]206 <para>
207 Now create the <filename class='directory'>/etc/profile.d</filename>
208 directory, where the individual initialization scripts are placed:
209 </para>
[1a396398]210
[2753b70b]211<screen role="root"><userinput>install --directory --mode=0755 --owner=root --group=root /etc/profile.d</userinput></screen>
[1a396398]212
[2753b70b]213 </sect3>
[1a396398]214
[931a597]215 <sect3 id="etc-profile.d-bash-completion.sh">
216 <title>/etc/profile.d/bash_completion.sh</title>
217
218 <indexterm zone="postlfs-config-profile etc-profile.d-bash-completion.sh">
219 <primary sortas="e-etc-profile.d-bash-completion.sh">/etc/profile.d/bash_completion.sh</primary>
220 </indexterm>
221
[81a73ed8]222 <note>
223 <para>
224 Using the bash completion script below is controversial. Not all
225 users like it. It adds many (usually over 1000) lines to the bash
226 environment and makes it difficult to use the 'set' command to
227 examine simple environment variables. Omitting this script does
228 not interfere with the ability of bash to use the tab key for file
229 name completion.
230 </para>
231 </note>
232
233 <para>
234 This script imports bash completion scripts, installed by many
235 other BLFS packages, to allow TAB command line completion.
236 </para>
[931a597]237
238<screen role="root"><userinput>cat &gt; /etc/profile.d/bash_completion.sh &lt;&lt; "EOF"
239<literal># Begin /etc/profile.d/bash_completion.sh
240# Import bash completion scripts
241
[5c3f3856]242# If the bash-completion package is installed, use its configuration instead
243if [ -f /usr/share/bash-completion/bash_completion ]; then
244
245 # Check for interactive bash and that we haven't already been sourced.
246 if [ -n "${BASH_VERSION-}" -a -n "${PS1-}" -a -z "${BASH_COMPLETION_VERSINFO-}" ]; then
247
248 # Check for recent enough version of bash.
249 if [ ${BASH_VERSINFO[0]} -gt 4 ] || \
250 [ ${BASH_VERSINFO[0]} -eq 4 -a ${BASH_VERSINFO[1]} -ge 1 ]; then
251 [ -r "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion" ] &amp;&amp; \
252 . "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion"
253 if shopt -q progcomp &amp;&amp; [ -r /usr/share/bash-completion/bash_completion ]; then
254 # Source completion code.
255 . /usr/share/bash-completion/bash_completion
256 fi
257 fi
258 fi
259
260else
261
262 # bash-completions are not installed, use only bash completion directory
263 if shopt -q progcomp; then
264 for script in /etc/bash_completion.d/* ; do
265 if [ -r $script ] ; then
266 . $script
267 fi
268 done
269 fi
270fi
271
[931a597]272# End /etc/profile.d/bash_completion.sh</literal>
273EOF</userinput></screen>
[81a73ed8]274 <para>
275 Make sure that the directory exists:
276 </para>
[931a597]277
278<screen role="root"><userinput>install --directory --mode=0755 --owner=root --group=root /etc/bash_completion.d</userinput></screen>
279
[81a73ed8]280 <para>
281 For a more complete installation, see
282 <ulink url="&blfs-wiki;/bash-shell-startup-files#bash-completions"/>.
283 </para>
[931a597]284
[5c3f3856]285 </sect3>
[931a597]286
[2753b70b]287 <sect3 id="etc-profile.d-dircolors.sh">
288 <title>/etc/profile.d/dircolors.sh</title>
289
290 <indexterm zone="postlfs-config-profile etc-profile.d-dircolors.sh">
291 <primary sortas="e-etc-profile.d-dircolors.sh">/etc/profile.d/dircolors.sh</primary>
292 </indexterm>
293
[81a73ed8]294 <para>
295 This script uses the <filename>~/.dircolors</filename> and
296 <filename>/etc/dircolors</filename> files to control the colors of
297 file names in a directory listing. They control colorized output of
298 things like <command>ls --color</command>. The explanation of how to
299 initialize these files is at the end of this section.
300 </para>
[2753b70b]301
302<screen role="root"><userinput>cat &gt; /etc/profile.d/dircolors.sh &lt;&lt; "EOF"
[b5905ae]303<literal># Setup for /bin/ls and /bin/grep to support color, the alias is in /etc/bashrc.
[1a396398]304if [ -f "/etc/dircolors" ] ; then
305 eval $(dircolors -b /etc/dircolors)
[89ef45fc]306fi
[384039a]307
[89ef45fc]308if [ -f "$HOME/.dircolors" ] ; then
309 eval $(dircolors -b $HOME/.dircolors)
[b554263]310fi
[89ef45fc]311
[b5905ae]312alias ls='ls --color=auto'
313alias grep='grep --color=auto'</literal>
[2753b70b]314EOF</userinput></screen>
315
316 </sect3>
317
318 <sect3 id="extrapaths.sh">
319 <title>/etc/profile.d/extrapaths.sh</title>
320
321 <indexterm zone="postlfs-config-profile extrapaths.sh">
322 <primary sortas="e-etc-profile.d-extrapaths.sh">/etc/profile.d/extrapaths.sh</primary>
323 </indexterm>
324
[81a73ed8]325 <para>
326 This script adds some useful paths to the <envar>PATH</envar> and
327 can be used to customize other PATH related environment variables
328 (e.g. LD_LIBRARY_PATH, etc) that may be needed for all users.
329 </para>
[384039a]330
[2753b70b]331<screen role="root"><userinput>cat &gt; /etc/profile.d/extrapaths.sh &lt;&lt; "EOF"
332<literal>if [ -d /usr/local/lib/pkgconfig ] ; then
[1a396398]333 pathappend /usr/local/lib/pkgconfig PKG_CONFIG_PATH
334fi
335if [ -d /usr/local/bin ]; then
336 pathprepend /usr/local/bin
[b554263]337fi
[1a396398]338if [ -d /usr/local/sbin -a $EUID -eq 0 ]; then
339 pathprepend /usr/local/sbin
[a4f641b]340fi
[bfa21f3]341
[bdd4ca4]342if [ -d /usr/local/share ]; then
343 pathprepend /usr/local/share XDG_DATA_DIRS
344fi
345
[bfa21f3]346# Set some defaults before other applications add to these paths.
347pathappend /usr/share/man MANPATH
[a4f641b]348pathappend /usr/share/info INFOPATH</literal>
[2753b70b]349EOF</userinput></screen>
350
351 </sect3>
352
353 <sect3 id="readline.sh">
354 <title>/etc/profile.d/readline.sh</title>
355
356 <indexterm zone="postlfs-config-profile readline.sh">
357 <primary sortas="e-etc-profile.d-readline.sh">/etc/profile.d/readline.sh</primary>
358 </indexterm>
359
[81a73ed8]360 <para>
361 This script sets up the default <filename>inputrc</filename>
362 configuration file. If the user does not have individual settings, it
363 uses the global file.
364 </para>
[2753b70b]365
366<screen role="root"><userinput>cat &gt; /etc/profile.d/readline.sh &lt;&lt; "EOF"
[b59e5eb3]367<literal># Set up the INPUTRC environment variable.
[b554263]368if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ] ; then
[1a396398]369 INPUTRC=/etc/inputrc
[b554263]370fi
[2753b70b]371export INPUTRC</literal>
372EOF</userinput></screen>
373
374 </sect3>
375
376 <sect3 id="umask.sh">
377 <title>/etc/profile.d/umask.sh</title>
378
379 <indexterm zone="postlfs-config-profile umask.sh">
380 <primary sortas="e-etc-profile.d-umask.sh">/etc/profile.d/umask.sh</primary>
381 </indexterm>
[384039a]382
[81a73ed8]383 <para>
384 Setting the <command>umask</command> value is important for security.
385 Here the default group write permissions are turned off for system
386 users and when the user name and group name are not the same.
387 </para>
[b554263]388
[2753b70b]389<screen role="root"><userinput>cat &gt; /etc/profile.d/umask.sh &lt;&lt; "EOF"
[ec64d28]390<literal># By default, the umask should be set.
[1a396398]391if [ "$(id -gn)" = "$(id -un)" -a $EUID -gt 99 ] ; then
392 umask 002
393else
394 umask 022
[2753b70b]395fi</literal>
396EOF</userinput></screen>
397
398 </sect3>
399
[be409f9a]400<!-- This is handled in the Xorg section of the book
[2753b70b]401 <sect3 id="X.sh">
402 <title>/etc/profile.d/X.sh</title>
[1a396398]403
[2753b70b]404 <indexterm zone="postlfs-config-profile X.sh">
405 <primary sortas="e-etc-profile.d-X.sh">/etc/profile.d/X.sh</primary>
406 </indexterm>
[1a396398]407
[81a73ed8]408 <para>
409 If <application>X</application> is installed, the <envar>PATH</envar>
410 and <envar>PKG_CONFIG_PATH</envar> variables are also updated.
411 </para>
[1a396398]412
[2753b70b]413<screen role="root"><userinput>cat &gt; /etc/profile.d/X.sh &lt;&lt; "EOF"
414<literal>if [ -x /usr/X11R6/bin/X ]; then
[1a396398]415 pathappend /usr/X11R6/bin
416fi
417if [ -d /usr/X11R6/lib/pkgconfig ] ; then
418 pathappend /usr/X11R6/lib/pkgconfig PKG_CONFIG_PATH
[2753b70b]419fi</literal>
420EOF</userinput></screen>
421
422 </sect3>
[be409f9a]423-->
[d202a49f]424 <sect3 id="i18n.sh">
425 <!-- This is handled system wide on systemd but LANG is not exported to
426 the environment, hence it's return...need to add additional text for
427 systemd only -->
[0d7ec6f1]428 <title>/etc/profile.d/i18n.sh</title>
[2753b70b]429
430 <indexterm zone="postlfs-config-profile i18n.sh">
431 <primary sortas="e-etc-profile.d-i18n.sh">/etc/profile.d/i18n.sh</primary>
432 </indexterm>
433
[81a73ed8]434 <para>
435 This script sets an environment variable necessary for
436 native language support. A full discussion on determining this
437 variable can be found on the <ulink
[f0dc9578]438 url="&lfs-root;/chapter09/profile.html">LFS Bash Shell
[81a73ed8]439 Startup Files</ulink> page.
440 </para>
[2753b70b]441
[1794983d]442<screen role="root" revision="sysv"><userinput>cat &gt; /etc/profile.d/i18n.sh &lt;&lt; "EOF"
[2753b70b]443<literal># Set up i18n variables
[0f442884]444export LANG=<replaceable>&lt;ll&gt;</replaceable>_<replaceable>&lt;CC&gt;</replaceable>.<replaceable>&lt;charmap&gt;</replaceable><replaceable>&lt;@modifiers&gt;</replaceable></literal>
[1794983d]445EOF</userinput></screen>
446
447<screen role="root" revision="systemd"><userinput>cat &gt; /etc/profile.d/i18n.sh &lt;&lt; "EOF"
448<literal># Set up i18n variables
449. /etc/locale.conf
450export LANG</literal>
[2753b70b]451EOF</userinput></screen>
452
453 </sect3>
454
455 <sect3>
456 <title>Other Initialization Values</title>
457
[81a73ed8]458 <para>
459 Other initialization can easily be added to the
460 <filename>profile</filename> by adding additional scripts to the
461 <filename class='directory'>/etc/profile.d</filename> directory.
462 </para>
[2753b70b]463
464 </sect3>
465
466 </sect2>
467
468 <sect2 id="etc-bashrc-profile">
469 <title>/etc/bashrc</title>
470
471 <indexterm zone="postlfs-config-profile etc-bashrc-profile">
472 <primary sortas="e-etc-bashrc">/etc/bashrc</primary>
473 </indexterm>
474
[81a73ed8]475 <para>
476 Here is a base <filename>/etc/bashrc</filename>. Comments in the
477 file should explain everything you need.
478 </para>
[2753b70b]479
480<screen role="root"><userinput>cat &gt; /etc/bashrc &lt;&lt; "EOF"
[384039a]481<literal># Begin /etc/bashrc
482# Written for Beyond Linux From Scratch
[b554263]483# by James Robertson &lt;jameswrobertson@earthlink.net&gt;
[4e88613]484# updated by Bruce Dubbs &lt;bdubbs@&lfs-domainname;&gt;
[ad33bab6]485
[b554263]486# System wide aliases and functions.
487
488# System wide environment variables and startup programs should go into
489# /etc/profile. Personal environment variables and startup programs
490# should go into ~/.bash_profile. Personal aliases and functions should
491# go into ~/.bashrc
492
[b5905ae]493# Provides colored /bin/ls and /bin/grep commands. Used in conjunction
494# with code in /etc/profile.
[1a396398]495
[b554263]496alias ls='ls --color=auto'
[b5905ae]497alias grep='grep --color=auto'
[b554263]498
[1a396398]499# Provides prompt for non-login shells, specifically shells started
[2753b70b]500# in the X environment. [Review the LFS archive thread titled
[384039a]501# PS1 Environment Variable for a great case study behind this script
[dd362e5]502# addendum.]
[1a396398]503
[0d7ec6f1]504NORMAL="\[\e[0m\]"
505RED="\[\e[1;31m\]"
506GREEN="\[\e[1;32m\]"
507if [[ $EUID == 0 ]] ; then
508 PS1="$RED\u [ $NORMAL\w$RED ]# $NORMAL"
509else
510 PS1="$GREEN\u [ $NORMAL\w$GREEN ]\$ $NORMAL"
511fi
[28a9992]512
[dc53944]513unset RED GREEN NORMAL
514
[2753b70b]515# End /etc/bashrc</literal>
516EOF</userinput></screen>
517
518 </sect2>
519
520 <sect2 id="bash_profile-profile">
521 <title>~/.bash_profile</title>
522
523 <indexterm zone="postlfs-config-profile bash_profile-profile">
524 <primary sortas="e-AA.bash_profile">~/.bash_profile</primary>
525 </indexterm>
526
[81a73ed8]527 <para>
528 Here is a base <filename>~/.bash_profile</filename>. If you want each
529 new user to have this file automatically, just change the output of
530 the command to <filename>/etc/skel/.bash_profile</filename> and check the
531 permissions after the command is run. You can then copy <filename>
532 /etc/skel/.bash_profile</filename> to the home directories of already
533 existing users, including <systemitem class="username">root</systemitem>,
534 and set the owner and group appropriately.
535 </para>
[2753b70b]536
537<screen><userinput>cat &gt; ~/.bash_profile &lt;&lt; "EOF"
538<literal># Begin ~/.bash_profile
[b554263]539# Written for Beyond Linux From Scratch
540# by James Robertson &lt;jameswrobertson@earthlink.net&gt;
[4e88613]541# updated by Bruce Dubbs &lt;bdubbs@&lfs-domainname;&gt;
[b554263]542
[64d97b7c]543# Personal environment variables and startup programs.
[b554263]544
545# Personal aliases and functions should go in ~/.bashrc. System wide
546# environment variables and startup programs are in /etc/profile.
547# System wide aliases and functions are in /etc/bashrc.
548
549if [ -f "$HOME/.bashrc" ] ; then
[76d61ba]550 source $HOME/.bashrc
[b554263]551fi
552
553if [ -d "$HOME/bin" ] ; then
[dc53944]554 pathprepend $HOME/bin
[b554263]555fi
556
[dc53944]557# Having . in the PATH is dangerous
558#if [ $EUID -gt 99 ]; then
559# pathappend .
560#fi
[b554263]561
[2753b70b]562# End ~/.bash_profile</literal>
563EOF</userinput></screen>
564
565 </sect2>
[384039a]566
[6f36554]567 <sect2 id="dot_profile-profile">
568 <title>~/.profile</title>
569
570 <indexterm zone="postlfs-config-profile dot_profile-profile">
571 <primary sortas="e-AA.dot_profile">~/.profile</primary>
572 </indexterm>
573
[81a73ed8]574 <para>
575 Here is a base <filename>~/.profile</filename>. The comments and
576 instructions for using <filename class="directory">/etc/skel</filename>
577 for <filename>.bash_profile</filename> above also apply here. Only the
578 target file names are different.
579 </para>
[6f36554]580
581<screen><userinput>cat &gt; ~/.profile &lt;&lt; "EOF"
582<literal># Begin ~/.profile
583# Personal environment variables and startup programs.
584
585if [ -d "$HOME/bin" ] ; then
586 pathprepend $HOME/bin
587fi
588
[d202a49f]589# Set up user specific i18n variables
590#export LANG=<replaceable>&lt;ll&gt;</replaceable>_<replaceable>&lt;CC&gt;</replaceable>.<replaceable>&lt;charmap&gt;</replaceable><replaceable>&lt;@modifiers&gt;</replaceable>
591
[6f36554]592# End ~/.profile</literal>
593EOF</userinput></screen>
594
595 </sect2>
596
[2753b70b]597 <sect2 id="bashrc-profile">
598 <title>~/.bashrc</title>
599
600 <indexterm zone="postlfs-config-profile bashrc-profile">
601 <primary sortas="e-AA.bashrc">~/.bashrc</primary>
602 </indexterm>
603
[81a73ed8]604 <para>
605 Here is a base <filename>~/.bashrc</filename>.
606 </para>
[2753b70b]607
608<screen><userinput>cat &gt; ~/.bashrc &lt;&lt; "EOF"
609<literal># Begin ~/.bashrc
[b554263]610# Written for Beyond Linux From Scratch
611# by James Robertson &lt;jameswrobertson@earthlink.net&gt;
612
613# Personal aliases and functions.
614
615# Personal environment variables and startup programs should go in
[64d97b7c]616# ~/.bash_profile. System wide environment variables and startup
[b554263]617# programs are in /etc/profile. System wide aliases and functions are
[384039a]618# in /etc/bashrc.
[b554263]619
620if [ -f "/etc/bashrc" ] ; then
[76d61ba]621 source /etc/bashrc
[b554263]622fi
623
[d202a49f]624# Set up user specific i18n variables
625#export LANG=<replaceable>&lt;ll&gt;</replaceable>_<replaceable>&lt;CC&gt;</replaceable>.<replaceable>&lt;charmap&gt;</replaceable><replaceable>&lt;@modifiers&gt;</replaceable>
626
[2753b70b]627# End ~/.bashrc</literal>
628EOF</userinput></screen>
629
630 </sect2>
[384039a]631
632
[2753b70b]633 <sect2 id="bash_logout-profile">
634 <title>~/.bash_logout</title>
635
636 <indexterm zone="postlfs-config-profile bash_logout-profile">
637 <primary sortas="e-AA.bash_logout">~/.bash_logout</primary>
638 </indexterm>
639
[81a73ed8]640 <para>
641 This is an empty <filename>~/.bash_logout</filename> that can be used as
642 a template. You will notice that the base <filename>~/.bash_logout
643 </filename> does not include a <userinput>clear</userinput> command.
644 This is because the clear is handled in the
645 <filename>/etc/issue</filename> file.
646 </para>
[2753b70b]647
648<screen><userinput>cat &gt; ~/.bash_logout &lt;&lt; "EOF"
649<literal># Begin ~/.bash_logout
[b554263]650# Written for Beyond Linux From Scratch
651# by James Robertson &lt;jameswrobertson@earthlink.net&gt;
652
653# Personal items to perform on logout.
654
[2753b70b]655# End ~/.bash_logout</literal>
656EOF</userinput></screen>
657
658 </sect2>
[384039a]659
660
[2753b70b]661 <sect2 id="etc-dircolors-profile">
662 <title>/etc/dircolors</title>
663
664 <indexterm zone="postlfs-config-profile etc-dircolors-profile">
665 <primary sortas="e-etc-dircolors">/etc/dircolors</primary>
666 </indexterm>
667
668 <indexterm zone="postlfs-config-profile etc-dircolors-profile">
669 <primary sortas="e-AA.dircolors">~/.dircolors</primary>
670 </indexterm>
671
[81a73ed8]672 <para>
673 If you want to use the <filename>dircolors</filename> capability, then
674 run the following command. The <filename class="directory">/etc/skel
675 </filename> setup steps shown above also can be used here to provide
676 a <filename>~/.dircolors</filename> file when a new user is set up.
677 As before, just change the output file name on the following command
678 and assure the permissions, owner, and group are correct on the files
679 created and/or copied.
680 </para>
[2753b70b]681
682<screen role="root"><userinput>dircolors -p > /etc/dircolors</userinput></screen>
683
[81a73ed8]684 <para>
685 If you wish to customize the colors used for different file types, you
686 can edit the <filename>/etc/dircolors</filename> file. The instructions
687 for setting the colors are embedded in the file.
688 </para>
[2753b70b]689
690
[81a73ed8]691 <para>
692 Finally, Ian Macdonald has written an excellent collection of tips and
693 tricks to enhance your shell environment. You can read it online at
[cd29bc9]694 <ulink url="https://www.caliban.org/bash/index.shtml"/>.
[81a73ed8]695 </para>
[2753b70b]696
697 </sect2>
698
[b554263]699</sect1>
Note: See TracBrowser for help on using the repository browser.