<ก่อนหน้านี้ | Contents | ถัดไป>
7.7. ไฟล์เริ่มต้นของ Bash Shell
โปรแกรมเชลล์ / bin / bash (ต่อจากนี้จะเรียกว่า “เชลล์”) ใช้คอลเล็กชันของไฟล์เริ่มต้นเพื่อช่วยสร้างสภาพแวดล้อมในการทำงาน แต่ละไฟล์มีการใช้งานเฉพาะและอาจส่งผลต่อการเข้าสู่ระบบและสภาพแวดล้อมแบบโต้ตอบต่างกัน ไฟล์ใน / ฯลฯ ไดเร็กทอรีให้การตั้งค่าส่วนกลาง หากมีไฟล์เทียบเท่าในโฮมไดเร็กทอรี ไฟล์นั้นอาจแทนที่การตั้งค่าส่วนกลาง
เชลล์ล็อกอินแบบโต้ตอบเริ่มต้นหลังจากล็อกอินสำเร็จ โดยใช้ /bin/เข้าสู่ระบบโดยการอ่าน / etc / passwd ไฟล์. เชลล์ที่ไม่ใช่การล็อกอินแบบโต้ตอบเริ่มต้นที่บรรทัดรับคำสั่ง (เช่น [พร้อมท์]$/ bin / bash). เชลล์ที่ไม่โต้ตอบมักจะปรากฏขึ้นเมื่อเชลล์สคริปต์ทำงาน ไม่มีการโต้ตอบเนื่องจากกำลังประมวลผลสคริปต์และไม่รอให้ผู้ใช้ป้อนข้อมูลระหว่างคำสั่ง
สำหรับข้อมูลเพิ่มเติมโปรดดูที่ ข้อมูลทุบตี ภายใต้ Bash Startup Files และ Interactive Shells มาตรา.
ไฟล์ / etc / profile และ ~ / .bash_profile จะถูกอ่านเมื่อเชลล์ถูกเรียกใช้เป็นเชลล์ล็อกอินแบบโต้ตอบ
ฐาน / etc / profile ด้านล่างตั้งค่าตัวแปรสภาพแวดล้อมบางอย่างที่จำเป็นสำหรับการสนับสนุนภาษาแม่ การตั้งค่าอย่างถูกต้องส่งผลให้:
• ผลลัพธ์ของโปรแกรมที่แปลเป็นภาษาแม่
• การจัดหมวดหมู่ตัวอักษรให้เป็นตัวอักษร ตัวเลข และคลาสอื่นๆ ให้ถูกต้อง นี่เป็นสิ่งจำเป็นสำหรับ ทุบตี เพื่อยอมรับอักขระที่ไม่ใช่ ASCII อย่างถูกต้องในบรรทัดคำสั่งในภาษาที่ไม่ใช่ภาษาอังกฤษ
• การเรียงลำดับตัวอักษรที่ถูกต้องสำหรับประเทศ
• ขนาดกระดาษเริ่มต้นที่เหมาะสม
• การจัดรูปแบบค่าเงิน เวลา และวันที่ที่ถูกต้อง
แทนที่ ด้านล่างด้วยรหัสสองตัวอักษรสำหรับภาษาที่ต้องการ (เช่น “en”) และ ด้วยรหัสสองตัวอักษรสำหรับประเทศที่เหมาะสม (เช่น “GB”) ควรแทนที่ด้วย charmap ตามรูปแบบบัญญัติสำหรับสถานที่ที่คุณเลือก อาจมีตัวแก้ไขเพิ่มเติม เช่น “@euro”
รายการโลแคลทั้งหมดที่รองรับโดย Glibc สามารถรับได้โดยการรันคำสั่งต่อไปนี้:
สถานที่เกิดเหตุ - a
สถานที่เกิดเหตุ - a
Charmaps สามารถมีนามแฝงได้หลายชื่อ เช่น “ISO-8859-1” เรียกอีกอย่างว่า “iso8859-1” และ “iso88591” บางแอปพลิเคชันไม่สามารถจัดการกับคำพ้องความหมายต่างๆ ได้อย่างถูกต้อง (เช่น กำหนดให้ "UTF-8" เขียนเป็น "UTF-8" ไม่ใช่ "utf8") ดังนั้นจึงปลอดภัยที่สุดในกรณีส่วนใหญ่ในการเลือกชื่อบัญญัติสำหรับสถานที่เฉพาะ ในการกำหนดชื่อบัญญัติ ให้รันคำสั่งต่อไปนี้ โดยที่ คือผลลัพธ์ที่กำหนดโดย สถานที่เกิดเหตุ - a สำหรับสถานที่ที่คุณต้องการ (“en_GB.iso88591” ในตัวอย่างของเรา)
LC_ALL = เสน่ห์สถานที่
LC_ALL = เสน่ห์สถานที่
สำหรับโลแคล “en_GB.iso88591” คำสั่งด้านบนจะพิมพ์ออกมา:
ISO-8859 1-
ISO-8859 1-
ส่งผลให้มีการตั้งค่าโลแคลสุดท้ายเป็น “en_GB.ISO-8859-1” เป็นสิ่งสำคัญที่โลแคลที่พบโดยใช้ฮิวริสติกด้านบนต้องได้รับการทดสอบก่อนที่จะถูกเพิ่มไปยังไฟล์เริ่มต้นของ Bash:
LC_ALL= ภาษาท้องถิ่น LC_ALL= เสน่ห์สถานที่ LC_ALL= สถานที่ int_curr_symbol LC_ALL= สถานที่ int_prefix
LC_ALL= ภาษาท้องถิ่น LC_ALL= เสน่ห์สถานที่ LC_ALL= สถานที่ int_curr_symbol LC_ALL= สถานที่ int_prefix
คำสั่งข้างต้นควรพิมพ์ชื่อภาษา การเข้ารหัสอักขระที่ใช้โดยสถานที่ สกุลเงินท้องถิ่น และคำนำหน้าที่จะโทรออกก่อนหมายเลขโทรศัพท์เพื่อเข้าประเทศ หากคำสั่งใด ๆ ข้างต้นล้มเหลวโดยมีข้อความคล้ายกับที่แสดงด้านล่าง แสดงว่าภาษาของคุณไม่ได้รับการติดตั้งในบทที่ 6 หรือไม่ได้รับการสนับสนุนโดยการติดตั้งเริ่มต้นของ Glibc
โลแคล: ไม่สามารถตั้งค่า LC_* เป็นโลแคลเริ่มต้น: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว
โลแคล: ไม่สามารถตั้งค่า LC_* เป็นโลแคลเริ่มต้น: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว
หากเกิดเหตุการณ์นี้ขึ้น คุณควรติดตั้งโลแคลที่ต้องการโดยใช้ localdef คำสั่งหรือพิจารณาเลือกสถานที่อื่น คำแนะนำเพิ่มเติมจะถือว่าไม่มีข้อความแสดงข้อผิดพลาดดังกล่าวจาก Glibc
แพ็คเกจบางตัวที่อยู่นอกเหนือ LFS อาจขาดการสนับสนุนสำหรับสถานที่ที่คุณเลือก ตัวอย่างหนึ่งคือไลบรารี X (ส่วนหนึ่งของ X Window System) ซึ่งแสดงข้อความแสดงข้อผิดพลาดต่อไปนี้ หากโลแคลไม่ตรงกับชื่อการแมปอักขระตัวใดตัวหนึ่งในไฟล์ภายใน:
คำเตือน: Xlib ไม่รองรับสถานที่เกิดเหตุ ตั้งค่าสถานที่เป็น C
คำเตือน: Xlib ไม่รองรับสถานที่เกิดเหตุ ตั้งค่าสถานที่เป็น C
ในหลายกรณี Xlib คาดว่าแผนผังอักขระจะแสดงเป็นสัญลักษณ์ตัวพิมพ์ใหญ่พร้อมขีดกลางตามรูปแบบบัญญัติ ตัวอย่างเช่น "ISO-8859-1" แทนที่จะเป็น "iso88591" นอกจากนี้ยังสามารถค้นหาข้อมูลจำเพาะที่เหมาะสมได้โดยการลบส่วน charmap ของข้อกำหนดเฉพาะของโลแคล ซึ่งสามารถตรวจสอบได้โดยเรียกใช้ เสน่ห์สถานที่ คำสั่งในทั้งสองภาษา ตัวอย่างเช่น เราต้องเปลี่ยน "de_DE.ISO-8859-15@euro" เป็น "de_DE@euro" เพื่อให้ Xlib รู้จักสถานที่นี้
แพ็คเกจอื่นๆ สามารถทำงานได้อย่างไม่ถูกต้อง (แต่อาจไม่จำเป็นต้องแสดงข้อความแสดงข้อผิดพลาด) หากชื่อสถานที่ไม่ตรงตามความคาดหวัง ในกรณีเหล่านี้ การตรวจสอบว่าลีนุกซ์รุ่นอื่นๆ รองรับโลแคลของคุณอย่างไร อาจให้ข้อมูลที่เป็นประโยชน์บางประการ
เมื่อกำหนดการตั้งค่าสถานที่ที่เหมาะสมแล้ว ให้สร้าง / etc / profile ไฟล์:
cat > /etc/profile << "EOF"
# เริ่มต้น /etc/profile
ส่งออก LANG=_ . <@modifiers>
# จบ /etc/profile
EOF
cat > /etc/profile << "EOF"
# เริ่มต้น /etc/profile
ส่งออก LANG=_ . <@modifiers>
# จบ /etc/profile
EOF
ภาษา “C” (ค่าเริ่มต้น) และ “en_US” (ภาษาที่แนะนำสำหรับผู้ใช้ภาษาอังกฤษแบบสหรัฐอเมริกา) ต่างกัน “C” ใช้ชุดอักขระ 7 บิต US-ASCII และถือว่าไบต์ที่มีชุดบิตสูงเป็นอักขระที่ไม่ถูกต้อง นั่นเป็นเหตุผล เช่น the ls คำสั่งแทนที่ด้วยเครื่องหมายคำถามในสถานที่นั้น นอกจากนี้ ความพยายามที่จะส่งจดหมายที่มีอักขระดังกล่าวจาก Mutt หรือ Pine ส่งผลให้มีการส่งข้อความที่ไม่สอดคล้องกับ RFC (ชุดอักขระในอีเมลขาออกจะระบุว่า "ไม่รู้จัก 8 บิต") ดังนั้น คุณสามารถใช้โลแคล "C" ได้ก็ต่อเมื่อคุณแน่ใจว่าจะไม่ต้องใช้อักขระ 8 บิต
โลแคลที่ใช้ UTF-8 ไม่ได้รับการสนับสนุนอย่างดีในบางโปรแกรม กำลังดำเนินการจัดทำเอกสาร และหากเป็นไปได้ ให้แก้ไขปัญหาดังกล่าว โปรดดูที่ http://www.linuxfromscratch.org/blfs/view/9.0/introduction/locale-issues.html