<ก่อนหน้านี้ | Contents | ถัดไป>
เมื่อล็อกอินเชลล์ออก ทุบตี อ่านและรันคำสั่งจากไฟล์ ~/.bash_logoutถ้ามันมีอยู่จริง ขั้นตอนนี้อธิบายโดยละเอียดใน เข้าสู่ระบบ และ ทุบตี หน้าคน
7.2.3. ชุดไฟล์ติดตั้งทั่วไป
7.2.3.1. / etc / ตัวอย่างโปรไฟล์
มาดูไฟล์ปรับแต่งเหล่านี้กัน อันดับแรก / etc / profile ถูกอ่านซึ่งมีตัวแปรสำคัญเช่น
PATH, USER และ HOSTNAME ถูกตั้งค่า:
เด็บบี้:~> แมว /etc/profile
# /etc/profile
# สภาพแวดล้อมทั้งระบบและโปรแกรมเริ่มต้นสำหรับการตั้งค่าการเข้าสู่ระบบ
# ฟังก์ชั่นและนามแฝงเข้าไป /etc/bashrc
# การจัดการเส้นทาง
ถ้า [ `id -u` = 0] && ! echo $PATH | /bin/grep -q "/sbin" ; แล้ว PATH=/sbin:$PATH
fi
ถ้า [ `id -u` = 0] && ! echo $PATH | /bin/grep -q "/usr/sbin" ; แล้ว PATH=/usr/sbin:$PATH
fi
ถ้า [ `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
เด็บบี้:~> แมว /etc/profile
# /etc/profile
# สภาพแวดล้อมทั้งระบบและโปรแกรมเริ่มต้นสำหรับการตั้งค่าการเข้าสู่ระบบ
# ฟังก์ชั่นและนามแฝงเข้าไป /etc/bashrc
# การจัดการเส้นทาง
ถ้า [ `id -u` = 0] && ! echo $PATH | /bin/grep -q "/sbin" ; แล้ว PATH=/sbin:$PATH
fi
ถ้า [ `id -u` = 0] && ! echo $PATH | /bin/grep -q "/usr/sbin" ; แล้ว PATH=/usr/sbin:$PATH
fi
ถ้า [ `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 ราก เปิดเชลล์ (ID ผู้ใช้ 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/ชื่อโฮสต์` HISTSIZE=1000
USER=`id -un` LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
HOSTNAME=`/bin/ชื่อโฮสต์` HISTSIZE=1000
ที่นี่ตัวแปรทั่วไปถูกกำหนดให้เป็นค่าที่เหมาะสม
ถ้า [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; จากนั้น INPUTRC=/etc/inputrc
fi
ถ้า [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; จากนั้น INPUTRC=/etc/inputrc
fi
ถ้าตัวแปร อินพุทอาร์ซี ไม่ได้กำหนดไว้ และไม่มี .inputrc ในโฮมไดเร็กทอรีของผู้ใช้ จากนั้นไฟล์ควบคุมอินพุตเริ่มต้นจะถูกโหลด
ส่งออก เส้นทาง USER ชื่อล็อก MAIL ชื่อโฮสต์ ฮิสต์ไซส์ อินพุทอาร์ซี
ตัวแปรทั้งหมดจะถูกส่งออก เพื่อให้พร้อมใช้งานสำหรับโปรแกรมอื่นที่ขอข้อมูลเกี่ยวกับสภาพแวดล้อมของคุณ
7.2.3.2. ไดเร็กทอรี profile.d
สำหรับฉันใน /etc/profile.d/*.sh ; ทำถ้า [ -r $i ]; แล้ว
. $ฉัน
fi เสร็จแล้ว unset i
สำหรับฉันใน /etc/profile.d/*.sh ; ทำถ้า [ -r $i ]; แล้ว
. $ฉัน
fi เสร็จแล้ว unset i
เชลล์สคริปต์ที่อ่านได้ทั้งหมดจาก the /etc/profile.d ไดเร็กทอรีถูกอ่านและดำเนินการ สิ่งเหล่านี้ทำเช่นการเปิดใช้งาน สี-ls, นามแฝง vi ไปยัง เป็นกลุ่ม, การตั้งค่าสถานที่ ฯลฯ ตัวแปรชั่วคราว i ไม่ได้ตั้งค่าเพื่อป้องกันไม่ให้รบกวนการทำงานของเชลล์ในภายหลัง
7.2.3.3. .bash_profile ตัวอย่าง
แล้วก็ ทุบตี มองหา a .bash_profile ในโฮมไดเร็กทอรีของผู้ใช้:
เด็บบี้:~> แมว .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. NS ~ / .bashrc ไฟล์ใช้เพื่อกำหนดนามแฝงและฟังก์ชันเฉพาะผู้ใช้จำนวนมากและตัวแปรสภาพแวดล้อมส่วนบุคคล ตอนแรกอ่านว่า / etc / bashrcซึ่งอธิบายพรอมต์เริ่มต้น (PS1) และค่า umask เริ่มต้น หลังจากนั้น คุณสามารถเพิ่มการตั้งค่าของคุณเองได้ ถ้าไม่ ~ / .bashrc มีอยู่ / etc / bashrc ถูกอ่านโดยค่าเริ่มต้น
7.2.3.5. /etc/bashrc ตัวอย่าง
ของคุณ / etc / bashrc ไฟล์อาจมีลักษณะดังนี้:
เด็บบี้:~> แมว /etc/bashrc
# /etc/bashrc
# ฟังก์ชั่นทั้งระบบและนามแฝง
# สภาพแวดล้อมใน /etc/profile
# โดยค่าเริ่มต้น เราต้องการให้ตั้งค่านี้
เด็บบี้:~> แมว /etc/bashrc
# /etc/bashrc
# ฟังก์ชั่นทั้งระบบและนามแฝง
# สภาพแวดล้อมใน /etc/profile
# โดยค่าเริ่มต้น เราต้องการให้ตั้งค่านี้
# แม้สำหรับเชลล์ที่ไม่ใช่แบบโต้ตอบและไม่ล็อกอิน
ถ้า [ `id -gn` = `id -un` -a `id -u` -gt 99 ]; แล้วก็ umask 002
อื่น
อูมาสก์ 022
fi
# แม้สำหรับเชลล์ที่ไม่ใช่แบบโต้ตอบและไม่ล็อกอิน
ถ้า [ `id -gn` = `id -un` -a `id -u` -gt 99 ]; แล้วก็ umask 002
อื่น
อูมาสก์ 022
fi
เส้นเหล่านี้กำหนด อูมาสก์ ค่า. จากนั้นพรอมต์จะถูกตั้งค่าตามประเภทของเชลล์:
# เราเป็นเชลล์แบบโต้ตอบหรือไม่? ถ้า [ "$PS1" ]; แล้ว
ถ้า [ -x /usr/bin/tput ]; แล้ว
ถ้า [ "x`tput kbs`" != "x" ]; แล้ว
# เราไม่สามารถทำเช่นนี้กับเทอร์มินัล "ใบ้" ลบ `tput kbs`
เอลิฟ [ -x /usr/bin/wc ]; แล้ว
ถ้า [ "`tput kbs|wc -c `" -gt 0 ]; แล้ว
# เราไม่สามารถทำเช่นนี้กับเทอร์มินัล "ใบ้" ลบ `tput kbs`
ไฟ ไฟ
fi
กรณี $TERM ใน
เอ็กซ์เทอม*)
ถ้า [ -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
;;
ว่า C
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
ถ้า [ "x$SHLVL" != "x1" ]; ถ้าอย่างนั้น # เราไม่ใช่เชลล์การเข้าสู่ระบบสำหรับฉันใน /etc/profile.d/*.sh; ทำ
ถ้า [ -x $i ]; แล้ว
. $ฉัน
fi
ทำ
fi
fi
# เราเป็นเชลล์แบบโต้ตอบหรือไม่? ถ้า [ "$PS1" ]; แล้ว
ถ้า [ -x /usr/bin/tput ]; แล้ว
ถ้า [ "x`tput kbs`" != "x" ]; แล้ว
# เราไม่สามารถทำเช่นนี้กับเทอร์มินัล "ใบ้" ลบ `tput kbs`
เอลิฟ [ -x /usr/bin/wc ]; แล้ว
ถ้า [ "`tput kbs|wc -c `" -gt 0 ]; แล้ว
# เราไม่สามารถทำเช่นนี้กับเทอร์มินัล "ใบ้" ลบ `tput kbs`
ไฟ ไฟ
fi
กรณี $TERM ใน
เอ็กซ์เทอม*)
ถ้า [ -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
;;
ว่า C
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
ถ้า [ "x$SHLVL" != "x1" ]; ถ้าอย่างนั้น # เราไม่ใช่เชลล์การเข้าสู่ระบบสำหรับฉันใน /etc/profile.d/*.sh; ทำ
ถ้า [ -x $i ]; แล้ว
. $ฉัน
fi
ทำ
fi
fi
7.2.3.6. .bash_logout ตัวอย่าง
เมื่อออกจากระบบ คำสั่งใน ~/.bash_logout ถูกดำเนินการ ซึ่งสามารถยกตัวอย่างเช่น ล้างเทอร์มินัล เพื่อให้คุณมีหน้าต่างที่สะอาดเมื่อออกจากระบบเซสชันระยะไกล หรือเมื่อออกจากคอนโซลระบบ:
เด็บบี้:~> แมว .bash_logout
# ~/.bash_logout
ชัดเจน
เด็บบี้:~> แมว .bash_logout
# ~/.bash_logout
ชัดเจน
มาดูกันว่าสคริปต์เหล่านี้ทำงานอย่างไรในหัวข้อถัดไป เก็บไว้ ข้อมูล ทุบตี ใกล้มือ