ค้นหาเว็บไซต์

ทำความเข้าใจกับไฟล์การเริ่มต้นเชลล์และโปรไฟล์ผู้ใช้ใน Linux


Linux เป็นระบบแบ่งเวลาแบบหลายผู้ใช้ ซึ่งหมายความว่าผู้ใช้มากกว่าหนึ่งรายสามารถเข้าสู่ระบบและใช้งานระบบได้ และผู้ดูแลระบบมีหน้าที่จัดการแง่มุมต่างๆ เกี่ยวกับวิธีการใช้งานระบบของผู้ใช้ที่แตกต่างกัน ในแง่ของการติดตั้ง/อัพเดต/การถอดซอฟต์แวร์ โปรแกรมที่พวกเขาสามารถรัน ไฟล์ที่พวกเขาสามารถดู/แก้ไข และอื่นๆ

Linux ยังอนุญาตให้สร้างหรือบำรุงรักษาสภาพแวดล้อมของผู้ใช้ได้ในสองวิธีหลัก: การใช้การกำหนดค่าทั้งระบบ (ทั่วโลก) และการกำหนดค่าเฉพาะผู้ใช้ (ส่วนตัว) โดยปกติ วิธีการพื้นฐานในการทำงานกับระบบ Linux คือเชลล์ และเชลล์จะสร้างสภาพแวดล้อมโดยขึ้นอยู่กับไฟล์บางไฟล์ที่อ่านระหว่างการกำหนดค่าเริ่มต้นหลังจากผู้ใช้เข้าสู่ระบบสำเร็จ

แนะนำให้อ่าน: วิธีการตั้งค่าตัวแปรสภาพแวดล้อมใน Linux

ในบทความนี้ เราจะอธิบายไฟล์การกำหนดค่าเริ่มต้นของเชลล์ที่เกี่ยวข้องกับโปรไฟล์ผู้ใช้สำหรับการจัดการผู้ใช้ภายในเครื่องใน Linux เราจะแจ้งให้คุณทราบว่าจะเก็บฟังก์ชันเชลล์ที่กำหนดเอง นามแฝง ตัวแปร รวมถึงโปรแกรมเริ่มต้นไว้ที่ไหน

ข้อสำคัญ: สำหรับวัตถุประสงค์ของบทความนี้ เราจะเน้นที่ bash ซึ่งเป็นเชลล์ที่เข้ากันได้ sh ซึ่ง เชลล์ที่ได้รับความนิยม/ใช้งานมากที่สุดบนระบบ Linux

หากคุณใช้โปรแกรมเชลล์อื่น (zsh, ash, fish ฯลฯ..) โปรดอ่านเอกสารประกอบของโปรแกรมเพื่อหาข้อมูลเพิ่มเติมเกี่ยวกับไฟล์ที่เกี่ยวข้องบางไฟล์ที่เราจะพูดถึงที่นี่

การเริ่มต้นเชลล์ใน Linux

เมื่อเชลล์ถูกเรียกใช้ จะมีไฟล์การเริ่มต้น/การเริ่มต้นบางไฟล์ที่เชลล์อ่าน ซึ่งช่วยในการตั้งค่าสภาพแวดล้อมสำหรับเชลล์และผู้ใช้ระบบ นั่นคือฟังก์ชัน ตัวแปร นามแฝงที่กำหนดไว้ล่วงหน้า (และปรับแต่งเอง) และอื่นๆ

ไฟล์การกำหนดค่าเริ่มต้นมีสองประเภทที่เชลล์อ่าน:

  • ไฟล์เริ่มต้นทั้งระบบ – สิ่งเหล่านี้ประกอบด้วยการกำหนดค่าส่วนกลางที่ใช้กับผู้ใช้ทุกคนในระบบ และโดยปกติจะอยู่ในไดเร็กทอรี /etc ได้แก่: /etc/profiles และ /etc/bashrc หรือ /etc/bash.bashrc
  • ไฟล์เริ่มต้นเฉพาะผู้ใช้ – การกำหนดค่าร้านค้าเหล่านี้ที่ใช้กับผู้ใช้รายเดียวบนระบบและโดยปกติจะอยู่ในโฮมไดเร็กตอรี่ของผู้ใช้เป็นไฟล์จุด พวกเขาสามารถแทนที่การกำหนดค่าทั้งระบบได้ ได้แก่: .profiles, .bash_profile, .bashrc และ .bash_login

อีกครั้ง เชลล์สามารถเรียกใช้ได้ในสามโหมดที่เป็นไปได้:

1. เชลล์เข้าสู่ระบบแบบโต้ตอบ

เชลล์จะถูกเรียกใช้หลังจากที่ผู้ใช้เข้าสู่ระบบสำเร็จโดยใช้ /bin/login หลังจากอ่านข้อมูลประจำตัวที่จัดเก็บไว้ในไฟล์ /etc/passwd

เมื่อเชลล์เริ่มต้นเป็นเชลล์การเข้าสู่ระบบแบบโต้ตอบ เชลล์จะอ่าน /etc/profile และ ~/.bash_profile ที่เทียบเท่ากับผู้ใช้โดยเฉพาะ

2. เชลล์ที่ไม่ใช่การเข้าสู่ระบบแบบโต้ตอบ

เชลล์เริ่มต้นที่บรรทัดคำสั่งโดยใช้โปรแกรมเชลล์ เช่น $/bin/bash หรือ $/bin/zsh ซึ่งสามารถเริ่มต้นได้ด้วยการรันคำสั่ง /bin/su เช่นกัน

นอกจากนี้ เชลล์ที่ไม่ใช่การเข้าสู่ระบบแบบโต้ตอบสามารถเรียกใช้กับโปรแกรมเทอร์มินัล เช่น konsole, เทอร์มินัล หรือ xterm จากภายในสภาพแวดล้อมแบบกราฟิกได้เช่นกัน

เมื่อเชลล์เริ่มทำงานในสถานะนี้ มันจะคัดลอกสภาพแวดล้อมของเชลล์พาเรนต์ และอ่านไฟล์ ~/.bashrc เฉพาะผู้ใช้เพื่อดูคำแนะนำการกำหนดค่าการเริ่มต้นเพิ่มเติม

su
ls -la

3. เชลล์แบบไม่โต้ตอบ

เชลล์ถูกเรียกใช้เมื่อเชลล์สคริปต์กำลังทำงาน ในโหมดนี้ โหมดกำลังประมวลผลสคริปต์ (ชุดของเชลล์หรือคำสั่ง/ฟังก์ชันระบบทั่วไป) และไม่จำเป็นต้องให้ผู้ใช้ป้อนข้อมูลระหว่างคำสั่ง เว้นแต่เป็นอย่างอื่น มันทำงานโดยใช้สภาพแวดล้อมที่สืบทอดมาจากพาเรนต์เชลล์

ทำความเข้าใจกับไฟล์เริ่มต้นเชลล์ทั้งระบบ

ในส่วนนี้ เราจะให้แสงสว่างมากขึ้นกับไฟล์สตาร์ทอัพเชลล์ที่เก็บการกำหนดค่าสำหรับผู้ใช้ทุกคนบนระบบ และสิ่งเหล่านี้รวมถึง:

ไฟล์ /etc/profile – เก็บการกำหนดค่าสภาพแวดล้อมทั้งระบบและโปรแกรมเริ่มต้นสำหรับการตั้งค่าการเข้าสู่ระบบ ควรเพิ่มการกำหนดค่าทั้งหมดที่คุณต้องการนำไปใช้กับสภาพแวดล้อมของผู้ใช้ระบบทั้งหมดในไฟล์นี้

ตัวอย่างเช่น คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อม PATH ส่วนกลางได้ที่นี่

cat /etc/profile

หมายเหตุ: ในบางระบบเช่น RHEL/CentOS 7 คุณจะได้รับคำเตือนเช่น “ไม่แนะนำให้เปลี่ยนไฟล์นี้เว้นแต่คุณจะ รู้ว่าคุณกำลังทำอะไรอยู่ จะดีกว่ามากถ้าสร้างเชลล์สคริปต์ .sh แบบกำหนดเองใน /etc/profile.d/ เพื่อทำการเปลี่ยนแปลงสภาพแวดล้อมของคุณแบบกำหนดเอง เนื่องจากจะป้องกันความจำเป็นในการรวมเข้าด้วยกัน การอัปเดตในอนาคต”

ไดเร็กทอรี /etc/profile.d/ – เก็บเชลล์สคริปต์ที่ใช้เพื่อทำการเปลี่ยนแปลงแบบกำหนดเองกับสภาพแวดล้อมของคุณ:

cd /etc/profile.d/
ls  -l 

ไฟล์ /etc/bashrc หรือ /etc/bash.bashrc – มีฟังก์ชันและนามแฝงทั่วทั้งระบบ รวมถึงการกำหนดค่าอื่นๆ ที่ใช้กับผู้ใช้ระบบทั้งหมด

หากระบบของคุณมีเชลล์หลายประเภท เป็นความคิดที่ดีที่จะใส่การกำหนดค่าเฉพาะ bash ไว้ในไฟล์นี้

cat /etc/bashrc

ทำความเข้าใจกับไฟล์เริ่มต้นเชลล์เฉพาะผู้ใช้

ต่อไป เราจะอธิบายเพิ่มเติมเกี่ยวกับไฟล์ dot เริ่มต้นเชลล์ (bash) เฉพาะผู้ใช้ ซึ่งจัดเก็บการกำหนดค่าสำหรับผู้ใช้เฉพาะบนระบบ โดยจะอยู่ในโฮมไดเร็กตอรี่ของผู้ใช้ และรวมถึง:

ls -la

ไฟล์ ~/.bash_profile – เป็นการจัดเก็บสภาพแวดล้อมเฉพาะของผู้ใช้และการกำหนดค่าโปรแกรมเริ่มต้น คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อม PATH แบบกำหนดเองได้ที่นี่ ดังที่แสดงในภาพหน้าจอด้านล่าง:

cat ~/.bash_profile

ไฟล์ ~/.bashrc – ไฟล์นี้เก็บนามแฝงและฟังก์ชันเฉพาะของผู้ใช้

cat ~/.bashrc

ไฟล์ ~/.bash_login ประกอบด้วยการกำหนดค่าเฉพาะที่ปกติจะดำเนินการเฉพาะเมื่อคุณเข้าสู่ระบบเท่านั้น เมื่อ ~/.bash_profile หายไป ไฟล์นี้จะถูกอ่านโดย bash

ไฟล์ ~/.profile – ไฟล์นี้จะถูกอ่านในกรณีที่ไม่มี ~/.bash_profile และ ~/.bash_login; สามารถจัดเก็บการกำหนดค่าเดียวกัน ซึ่งสามารถเข้าถึงได้โดยเชลล์อื่น ๆ บนระบบ เนื่องจากเราได้พูดคุยเกี่ยวกับ bash เป็นหลัก โปรดทราบว่าเชลล์อื่นๆ อาจไม่เข้าใจไวยากรณ์ของ bash

ต่อไป เราจะอธิบายไฟล์เฉพาะผู้ใช้ที่สำคัญอีกสองไฟล์ซึ่งไม่จำเป็นต้องเป็นไฟล์เริ่มต้นทุบตี:

ไฟล์ ~/.bash_history – bash จะรักษาประวัติคำสั่งที่ผู้ใช้ป้อนในระบบ รายการคำสั่งนี้ถูกเก็บไว้ในโฮมไดเร็กตอรี่ของผู้ใช้ในไฟล์ ~/.bash_history

หากต้องการดูรายการนี้ ให้พิมพ์:

history 
or 
history | less

ไฟล์ ~/.bash_logout ไม่ได้ใช้สำหรับการเริ่มต้นระบบเชลล์ แต่เก็บคำแนะนำเฉพาะของผู้ใช้สำหรับขั้นตอนการออกจากระบบ จะถูกอ่านและดำเนินการเมื่อผู้ใช้ออกจากเชลล์ล็อกอินแบบโต้ตอบ

ตัวอย่างหนึ่งที่ใช้งานได้จริงคือการล้างหน้าต่างเทอร์มินัลเมื่อออกจากระบบ นี่เป็นสิ่งสำคัญสำหรับการเชื่อมต่อระยะไกล ซึ่งจะทำให้หน้าต่างสะอาดหลังจากปิด:

cat bash_logout 

สำหรับข้อมูลเชิงลึกเพิ่มเติม ให้ตรวจสอบเนื้อหาของไฟล์การกำหนดค่าเริ่มต้นเชลล์เหล่านี้บน Linux distros ต่างๆ และอ่านผ่านหน้า bash man:

นั่นคือทั้งหมดที่สำหรับตอนนี้! ในบทความนี้ เราได้อธิบายเกี่ยวกับไฟล์เชลล์เริ่มต้น/เตรียมใช้งานใน Linux ใช้แบบฟอร์มความคิดเห็นด้านล่างเพื่อเขียนกลับมาหาเรา