Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

$ su
# ls -la
ทำความเข้าใจกับไฟล์การกำหนดค่าเริ่มต้นของเชลล์และโปรไฟล์ผู้ใช้ใน Linux

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

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

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

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

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

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

# cat /etc/profile
ทำความเข้าใจกับไฟล์การกำหนดค่าเริ่มต้นของเชลล์และโปรไฟล์ผู้ใช้ใน Linux

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

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

# cd /etc/profile.d/
# ls  -l 
ทำความเข้าใจกับไฟล์การกำหนดค่าเริ่มต้นของเชลล์และโปรไฟล์ผู้ใช้ใน Linux

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

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

# cat /etc/bashrc
ทำความเข้าใจกับไฟล์การกำหนดค่าเริ่มต้นของเชลล์และโปรไฟล์ผู้ใช้ใน Linux

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

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

# ls -la
ทำความเข้าใจกับไฟล์การกำหนดค่าเริ่มต้นของเชลล์และโปรไฟล์ผู้ใช้ใน Linux

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

# cat ~/.bash_profile
ทำความเข้าใจกับไฟล์การกำหนดค่าเริ่มต้นของเชลล์และโปรไฟล์ผู้ใช้ใน Linux

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

# cat ~/.bashrc
ทำความเข้าใจกับไฟล์การกำหนดค่าเริ่มต้นของเชลล์และโปรไฟล์ผู้ใช้ใน Linux

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

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

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

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

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

$ history 
or 
$ history | less
ทำความเข้าใจกับไฟล์การกำหนดค่าเริ่มต้นของเชลล์และโปรไฟล์ผู้ใช้ใน Linux

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

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

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

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

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