<Poprzedni | Spis treści | Następne>
Po zamknięciu powłoki logowania, bash odczytuje i wykonuje polecenia z pliku ~/.bash_logout, jeśli istnieje. Ta procedura jest szczegółowo wyjaśniona w Zaloguj Się i bash strony podręcznika.
7.2.3. Typowy zestaw plików instalacyjnych
7.2.3.1. /etc/przykład profilu
Spójrzmy na niektóre z tych plików konfiguracyjnych. Najpierw / etc / profile jest odczytywany, w którym ważne zmienne, takie jak
PATH, USER i HOSTNAME są ustawione:
Debby: ~> kot /etc/profil
# /etc/profil
# Środowisko systemowe i programy startowe do konfiguracji logowania
# Funkcje i aliasy trafiają do /etc/bashrc
# Manipulacja ścieżką
if [ `id -u` = 0 ] && ! echo $PATH | /bin/grep -q "/sbin" ; następnie PATH=/sbin:$PATH
fi
if [ `id -u` = 0 ] && ! echo $PATH | /bin/grep -q "/usr/sbin" ; następnie PATH=/usr/sbin:$PATH
fi
if [ `id -u` = 0 ] && ! echo $PATH | W takim razie /bin/grep -q "/usr/local/sbin"
ŚCIEŻKA=/usr/local/sbin:$ ŚCIEŻKA
fi
Jeśli ! echo $PATH | /bin/grep -q "/usr/X11R6/bin" ; następnie PATH="$PATH:/usr/X11R6/bin"
fi
Debby: ~> kot /etc/profil
# /etc/profil
# Środowisko systemowe i programy startowe do konfiguracji logowania
# Funkcje i aliasy trafiają do /etc/bashrc
# Manipulacja ścieżką
if [ `id -u` = 0 ] && ! echo $PATH | /bin/grep -q "/sbin" ; następnie PATH=/sbin:$PATH
fi
if [ `id -u` = 0 ] && ! echo $PATH | /bin/grep -q "/usr/sbin" ; następnie PATH=/usr/sbin:$PATH
fi
if [ `id -u` = 0 ] && ! echo $PATH | W takim razie /bin/grep -q "/usr/local/sbin"
ŚCIEŻKA=/usr/local/sbin:$ ŚCIEŻKA
fi
Jeśli ! echo $PATH | /bin/grep -q "/usr/X11R6/bin" ; następnie PATH="$PATH:/usr/X11R6/bin"
fi
Te linie sprawdzają ścieżkę do ustawienia: jeśli korzeń otwiera powłokę (identyfikator użytkownika 0), sprawdzane jest, że / sbin, / usr / sbin i
/usr/local/sbin są na ścieżce. Jeśli nie, są dodawane. Jest sprawdzany dla wszystkich, którzy
/usr/X11R6/bin znajduje się na ścieżce.
# Domyślnie brak plików core ulimit -S -c 0 > /dev/null 2>&1
# Domyślnie brak plików core ulimit -S -c 0 > /dev/null 2>&1
Wszystkie śmieci trafiają do / dev / null jeśli użytkownik nie zmieni tego ustawienia.
UŻYTKOWNIK=`id -un` NAZWA LOGOWANIA=$USER
MAIL="/var/spool/mail/$USER"
HOSTNAME=`/bin/hostname` HITSIZE=1000
UŻYTKOWNIK=`id -un` NAZWA LOGOWANIA=$USER
MAIL="/var/spool/mail/$USER"
HOSTNAME=`/bin/hostname` HITSIZE=1000
Tutaj zmiennym ogólnym przypisuje się ich właściwe wartości.
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; następnie INPUTRC=/etc/inputrc
fi
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; następnie INPUTRC=/etc/inputrc
fi
Jeśli zmienna WEJŚCIE nie jest ustawiony i nie ma .wejście w katalogu domowym użytkownika, ładowany jest domyślny wejściowy plik kontrolny.
eksport PATH USER NAZWA LOGU MAIL NAZWA HOSTA ROZMIAR HIST WEJŚCIE
Wszystkie zmienne są eksportowane, dzięki czemu są dostępne dla innych programów żądających informacji o Twoim środowisku.
7.2.3.2. Katalog profile.d
dla mnie w /etc/profile.d/*.sh ; wykonaj jeśli [ -r $i ]; następnie
. $tj
fi gotowe rozbrajać ja
dla mnie w /etc/profile.d/*.sh ; wykonaj jeśli [ -r $i ]; następnie
. $tj
fi gotowe rozbrajać ja
Wszystkie czytelne skrypty powłoki z /etc/profil.d katalogi są odczytywane i wykonywane. Robią takie rzeczy, jak włączanie kolor-ls, aliasowanie vi do vim, ustawianie lokalizacji itp. Zmienna tymczasowa i nie jest ustawiona, aby zapobiec późniejszemu zakłócaniu działania powłoki.
7.2.3.3. .bash_profile przykład
Następnie bash szuka .bash_profil w katalogu domowym użytkownika:
Debby: ~> kot .bash_profile
################################################## ###############
# #
# plik .bash_profile #
# #
# Wykonywane z powłoki bash po zalogowaniu. #
# #
################################################## ###############
źródło ~/.bashrc źródło ~/.bash_login
Ten bardzo prosty plik instruuje twoją powłokę, aby najpierw przeczytała ~ / .bashrc , a następnie ~/.bash_login. Spotkasz źródło wbudowane polecenie powłoki regularnie podczas pracy w środowisku powłoki: służy do wprowadzania zmian konfiguracyjnych w bieżącym środowisku.
7.2.3.4. .bash_login przykład
Połączenia ~/.bash_login file definiuje domyślną ochronę plików przez ustawienie umaska wartość, patrz rozdział 3.4.2.2. ten ~ / .bashrc Plik służy do definiowania szeregu aliasów i funkcji specyficznych dla użytkownika oraz osobistych zmiennych środowiskowych. Najpierw czyta / Etc / .bashrc, który opisuje domyślny monit (PS1) i domyślną wartość umask. Następnie możesz dodać własne ustawienia. Jeśli nie ~ / .bashrc istnieje, / Etc / .bashrc jest odczytywany domyślnie.
7.2.3.5. Przykład /etc/bashrc
Twój / Etc / .bashrc plik może wyglądać tak:
Debby: ~> kot /etc/bashrc
# /etc/bashrc
# Funkcje i aliasy ogólnosystemowe
# Środowisko trafia do /etc/profile
# domyślnie chcemy to ustawić.
Debby: ~> kot /etc/bashrc
# /etc/bashrc
# Funkcje i aliasy ogólnosystemowe
# Środowisko trafia do /etc/profile
# domyślnie chcemy to ustawić.
# Nawet dla powłok nieinteraktywnych, bez logowania.
if [ `id -gn` = `id -un` -a `id -u` -gt 99 ]; następnie umask 002
więcej
umaska 022
fi
# Nawet dla powłok nieinteraktywnych, bez logowania.
if [ `id -gn` = `id -un` -a `id -u` -gt 99 ]; następnie umask 002
więcej
umaska 022
fi
Te linie wyznaczają umaska wartość. Następnie, w zależności od typu powłoki, ustawiany jest znak zachęty:
# czy jesteśmy interaktywną powłoką? if [ "$PS1" ]; następnie
if [ -x /usr/bin/tput ]; następnie
if [ "x`tput kbs`" != "x" ]; następnie
# Nie możemy tego zrobić za pomocą "głupich" terminali stty erase `tput kbs`
elif [ -x /usr/bin/wc ]; następnie
if [ "`tput kbs|wc -c `" -gt 0 ]; następnie
# Nie możemy tego zrobić za pomocą "głupich" terminali stty erase `tput kbs`
fi fi
fi
sprawa $TERM w
xtermin*)
if [ -e /etc/sysconfig/bash-prompt-xterm ]; następnie PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
więcej
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:\
${PWD/$HOME/~}\007"'
fi
;;
*)
[ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=\
/etc/sysconfig/bash-prompt-default
;;
to C
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
if [ "x$SHLVL" != "x1" ]; then # Nie jesteśmy powłoką logowania dla i w /etc/profile.d/*.sh; robić
jeśli [ -x $i ]; następnie
. $tj
fi
zrobić
fi
fi
# czy jesteśmy interaktywną powłoką? if [ "$PS1" ]; następnie
if [ -x /usr/bin/tput ]; następnie
if [ "x`tput kbs`" != "x" ]; następnie
# Nie możemy tego zrobić za pomocą "głupich" terminali stty erase `tput kbs`
elif [ -x /usr/bin/wc ]; następnie
if [ "`tput kbs|wc -c `" -gt 0 ]; następnie
# Nie możemy tego zrobić za pomocą "głupich" terminali stty erase `tput kbs`
fi fi
fi
sprawa $TERM w
xtermin*)
if [ -e /etc/sysconfig/bash-prompt-xterm ]; następnie PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
więcej
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:\
${PWD/$HOME/~}\007"'
fi
;;
*)
[ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=\
/etc/sysconfig/bash-prompt-default
;;
to C
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
if [ "x$SHLVL" != "x1" ]; then # Nie jesteśmy powłoką logowania dla i w /etc/profile.d/*.sh; robić
jeśli [ -x $i ]; następnie
. $tj
fi
zrobić
fi
fi
7.2.3.6. .bash_logout przykład
Po wylogowaniu komendy w ~/.bash_logout są wykonywane, co może na przykład wyczyścić terminal, dzięki czemu po wylogowaniu się z sesji zdalnej lub opuszczeniu konsoli systemowej będzie czyste okno:
Debby: ~> kot .bash_logout
# ~/.bash_logout
jasny
Debby: ~> kot .bash_logout
# ~/.bash_logout
jasny
Przyjrzyjmy się bliżej działaniu tych skryptów w następnej sekcji. Trzymać Informacje bash pod ręką.