כאשר מעטפת כניסה יוצאת, לחבוט קורא ומבצע פקודות מהקובץ ~/.bash_logout, אם הוא קיים. הליך זה מוסבר בפירוט ב- התחבר ו לחבוט דפי גבר.
7.2.3. קבוצה טיפוסית של קבצי התקנה
7.2.3.1. דוגמה /etc/profile
בואו נסתכל על כמה מקבצי התצורה הללו. ראשון / etc / profile נקרא, שבו משתנים חשובים כגון
PATH, USER ו-HOSTNAME מוגדרים:
דבי:~> cat /etc/profile
# /etc/profile
# סביבת מערכת ותוכניות הפעלה, להגדרת התחברות
# פונקציות וכינויים נכנסים ל- /etc/bashrc
# מניפולציה של נתיב
if [ `id -u` = 0 ] && ! echo $PATH | /bin/grep -q "/sbin" ; ואז PATH=/sbin:$PATH
fi
if [ `id -u` = 0 ] && ! echo $PATH | /bin/grep -q "/usr/sbin" ; ואז PATH=/usr/sbin:$PATH
fi
if [ `id -u` = 0 ] && ! echo $PATH | /bin/grep -q "/usr/local/sbin" לאחר מכן
PATH=/usr/local/sbin:$PATH
fi
אם ! echo $PATH | /bin/grep -q "/usr/X11R6/bin" ; ואז PATH="$PATH:/usr/X11R6/bin"
fi
דבי:~> cat /etc/profile
# /etc/profile
# סביבת מערכת ותוכניות הפעלה, להגדרת התחברות
# פונקציות וכינויים נכנסים ל- /etc/bashrc
# מניפולציה של נתיב
if [ `id -u` = 0 ] && ! echo $PATH | /bin/grep -q "/sbin" ; ואז PATH=/sbin:$PATH
fi
if [ `id -u` = 0 ] && ! echo $PATH | /bin/grep -q "/usr/sbin" ; ואז PATH=/usr/sbin:$PATH
fi
if [ `id -u` = 0 ] && ! echo $PATH | /bin/grep -q "/usr/local/sbin" לאחר מכן
PATH=/usr/local/sbin:$PATH
fi
אם ! echo $PATH | /bin/grep -q "/usr/X11R6/bin" ; ואז PATH="$PATH:/usr/X11R6/bin"
fi
שורות אלה בודקות את הנתיב להגדיר: if שורש פותח מעטפת (מזהה משתמש 0), מסומן ש / sbin, / usr / sbin ו
/usr/local/sbin נמצאים בנתיב. אם לא, הם מתווספים. זה נבדק לכולם ש
/usr/X11R6/bin נמצא בנתיב.
# ללא קבצי ליבה כברירת מחדל ulimit -S -c 0 > /dev/null 2>&1
# ללא קבצי ליבה כברירת מחדל ulimit -S -c 0 > /dev/null 2>&1
כל הזבל הולך ל / dev / null אם המשתמש לא משנה הגדרה זו.
USER=`id -un` LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
HOSTNAME=`/bin/hostname` HISTSIZE=1000
USER=`id -un` LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
HOSTNAME=`/bin/hostname` HISTSIZE=1000
כאן משתנים כלליים מקבלים את הערכים המתאימים להם.
if [ -z "$INPUTRC" -a! -f "$HOME/.inputrc" ]; ואז INPUTRC=/etc/inputrc
fi
if [ -z "$INPUTRC" -a! -f "$HOME/.inputrc" ]; ואז INPUTRC=/etc/inputrc
fi
אם המשתנה INPUTRC לא מוגדר, ואין .inputrc בספריית הבית של המשתמש, אז נטען קובץ בקרת הקלט המוגדר כברירת מחדל.
יצוא נתיב משתמש LOGNAME MAIL שם מארח HISTSIZE INPUTRC
כל המשתנים מיוצאים, כך שהם זמינים לתוכניות אחרות המבקשות מידע על הסביבה שלך.
7.2.3.2. ספריית profile.d
עבור i ב-/etc/profile.d/*.sh ; לעשות אם [-r $i]; לאחר מכן
. $i
fi בוצע בטל i
עבור i ב-/etc/profile.d/*.sh ; לעשות אם [-r $i]; לאחר מכן
. $i
fi בוצע בטל i
כל תסריטי המעטפת הניתנים לקריאה מה- /etc/profile.d הספרייה נקראת ומבוצעת. אלה עושים דברים כמו הפעלת color-ls, כינוי vi ל מֶרֶץ, הגדרת מקומות וכו'. המשתנה הזמני i אינו מוגדר כדי למנוע ממנו להפריע להתנהגות המעטפת בהמשך.
7.2.3.3. דוגמה .bash_profile
לאחר מכן לחבוט מחפש א .bash_profile בספריית הבית של המשתמש:
דבי:~> cat .bash_profile
################################################## ###############
# #
# קובץ .bash_profile #
# #
# מופעל מה-bash shell כשאתה מתחבר. #
# #
################################################## ###############
מקור ~/.bashrc מקור ~/.bash_login
הקובץ הפשוט הזה מורה למעטפת שלך לקרוא תחילה ~ / .bashrc ולאחר מכן ~/.bash_login. אתה תתקל ב מָקוֹר פקודת מעטפת מובנית באופן קבוע בעת עבודה בסביבת מעטפת: היא משמשת להחלת שינויי תצורה על הסביבה הנוכחית.
7.2.3.4. דוגמה .bash_login
אל האני ~/.bash_login file מגדיר הגנת קבצים כברירת מחדל על ידי הגדרת ה- אומסק ערך, ראה סעיף 3.4.2.2. ה ~ / .bashrc הקובץ משמש להגדרת חבורה של כינויים ופונקציות ספציפיות למשתמש ומשתני סביבה אישיים. זה קורא לראשונה / Etc / bashrc, המתאר את הנחיית ברירת המחדל (PS1) וערך ברירת המחדל של umask. לאחר מכן, תוכל להוסיף הגדרות משלך. אם לא ~ / .bashrc קיים, / Etc / bashrc נקרא כברירת מחדל.
7.2.3.5. דוגמה /etc/bashrc
/ Etc / bashrc הקובץ עשוי להיראות כך:
דבי:~> cat /etc/bashrc
# /etc/bashrc
# פונקציות וכינויים רחבי המערכת
# דברים סביבתיים נכנסים ל-/etc/profile
# כברירת מחדל, אנחנו רוצים שזה יוגדר.
דבי:~> cat /etc/bashrc
# /etc/bashrc
# פונקציות וכינויים רחבי המערכת
# דברים סביבתיים נכנסים ל-/etc/profile
# כברירת מחדל, אנחנו רוצים שזה יוגדר.
# אפילו עבור קונכיות לא אינטראקטיביות, ללא כניסה.
if [ `id -gn` = `id -un` -a `id -u` -gt 99 ]; ואז umask 002
אחר
אומאסק 022
fi
# אפילו עבור קונכיות לא אינטראקטיביות, ללא כניסה.
if [ `id -gn` = `id -un` -a `id -u` -gt 99 ]; ואז umask 002
אחר
אומאסק 022
fi
שורות אלה קובעות את אומסק ערך. לאחר מכן, בהתאם לסוג המעטפת, ההנחיה מוגדרת:
# האם אנחנו מעטפת אינטראקטיבית? if [ "$PS1" ]; לאחר מכן
if [ -x /usr/bin/tput ]; לאחר מכן
if [ "x`tput kbs`" != "x" ]; לאחר מכן
# אנחנו לא יכולים לעשות את זה עם מסוף "מטומטם" stty erase `tput kbs`
elif [ -x /usr/bin/wc ]; לאחר מכן
if [ "`tput kbs|wc -c `" -gt 0 ]; לאחר מכן
# אנחנו לא יכולים לעשות את זה עם מסוף "מטומטם" stty erase `tput kbs`
fi fi
fi
מקרה $TERM ב
xterm*)
if [ -e /etc/sysconfig/bash-prompt-xterm ]; ואז PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
אחר
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
;;
esac
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
if [ "x$SHLVL" != "x1" ]; אז # אנחנו לא מעטפת כניסה עבור i ב-/etc/profile.d/*.sh; לַעֲשׂוֹת
if [-x $i]; לאחר מכן
. $i
fi
עשה
fi
fi
# האם אנחנו מעטפת אינטראקטיבית? if [ "$PS1" ]; לאחר מכן
if [ -x /usr/bin/tput ]; לאחר מכן
if [ "x`tput kbs`" != "x" ]; לאחר מכן
# אנחנו לא יכולים לעשות את זה עם מסוף "מטומטם" stty erase `tput kbs`
elif [ -x /usr/bin/wc ]; לאחר מכן
if [ "`tput kbs|wc -c `" -gt 0 ]; לאחר מכן
# אנחנו לא יכולים לעשות את זה עם מסוף "מטומטם" stty erase `tput kbs`
fi fi
fi
מקרה $TERM ב
xterm*)
if [ -e /etc/sysconfig/bash-prompt-xterm ]; ואז PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
אחר
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
;;
esac
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
if [ "x$SHLVL" != "x1" ]; אז # אנחנו לא מעטפת כניסה עבור i ב-/etc/profile.d/*.sh; לַעֲשׂוֹת
if [-x $i]; לאחר מכן
. $i
fi
עשה
fi
fi
7.2.3.6. דוגמה .bash_logout
עם התנתק, הפקודות נכנסות ~/.bash_logout מבוצעות, מה שיכול למשל לנקות את הטרמינל, כך שיהיה לך חלון נקי בעת יציאה מהפעלה מרחוק, או בעת יציאה ממסוף המערכת:
דבי:~> cat .bash_logout
# ~/.bash_logout
ברור
דבי:~> cat .bash_logout
# ~/.bash_logout
ברור
בואו נסתכל מקרוב על איך התסריטים האלה עובדים בסעיף הבא. לִשְׁמוֹר מידע לחבוט בהישג היד.