วิธีการรับ rc shell เพื่ออ่าน. rcrc เมื่อเริ่มต้นบน Ubuntu?


2

ฉันพยายามใช้rcเป็นเชลล์ล็อกอินของฉันใน Ubuntu (ใช้ chsh) ฉันสังเกตเห็นว่ามันไม่ได้อ่านไฟล์ $ HOME / .rcrc เมื่อเริ่มต้น เอกสารบอกว่าถ้าเรียกเป็นเปลือกเข้าสู่ระบบด้วย * argv [0] == '-' หรือมีธง -l มันอ่านไฟล์ .rcrc $ rc -lและผมสามารถยืนยันได้ว่าโดยการดำเนินการโดยตรงโดย หรือจาก ARGV0=-rc /usr/bin/rczsh

อย่างไรก็ตามเมื่อดำเนินการในการเข้าสู่ระบบจะไม่อ่านไฟล์. rcrc และเอาต์พุต ps บ่งชี้ว่าชื่อเชลล์เป็นเพียง "rc" ไม่ใช่ "-rc" ดังนั้นคำถามของฉันคือวิธีการรับ / usr / bin / rc อ่าน. rcrc เมื่อเริ่มต้น? และทำไม Ubuntu จึงไม่ prefixing "-" ลงในเชลล์? มีวิธีที่แตกต่างในการตรวจสอบเปลือกเป็นเปลือกเข้าสู่ระบบ?

คำตอบ:


2

ลินุกซ์เทอร์มินัลอีมูเลเตอร์บน GUI มักจะไม่เปิดเชลล์ล็อกอินโดยค่าเริ่มต้นซึ่งต่างกับเทอร์มินัลของ OS X

หากคุณกดCtrlAltF1และลงชื่อเข้าใช้ในบรรทัดคำสั่งคุณจะมีเชลล์ล็อกอินซึ่ง.rcrcคำสั่งจะถูกดำเนินการ


ใน Ubuntu ของเทอร์มิให้ไปแก้ไขการตั้งค่าโปรไฟล์»»กรรมสิทธิ์และคำสั่งคำสั่ง»เรียกใช้เป็นเปลือกเข้าสู่ระบบ

อีกทางหนึ่งเทอร์มินัลอีมูเลเตอร์ของคุณอาจรองรับการประมวลผลคำสั่งโดยพลการ /usr/bin/rc -lใช้


นอกจากนี้คุณยังสามารถสร้างสคริปต์สั้น ๆ ที่เปิดตัวrcในฐานะเชลล์การเข้าสู่ระบบ:

#!/bin/bash
exec -l /usr/bin/rc "$@"

สิ่งนี้จะเริ่มต้นbashการเรียกใช้สคริปต์และสคริปต์จะแทนที่สคริปต์นั้นอย่างสมบูรณ์ด้วยการrcเรียกใช้เป็นเชลล์การเข้าสู่ระบบ ( -lอาร์กิวเมนต์) รวมทั้งอาร์กิวเมนต์อื่น ๆ ทั้งหมดของสคริปต์นี้ คุณสามารถเพิ่ม-cอาร์กิวเมนต์เพื่อทำให้สุขอนามัยของสิ่งแวดล้อมดีขึ้น

บันทึกเป็นให้ปฏิบัติการและเพิ่มรายการที่สอดคล้องกันไป/usr/bin/rcl/etc/shells


ขอบคุณจึงมีวิธีแก้ปัญหาสำหรับเปลือก rc เพื่ออ่านไฟล์เริ่มต้นของผู้ใช้ (เช่น. rcrc)? ฉันจะทำอย่างไรถ้าฉันต้องการตั้งค่าพรอมต์เป็น rc
ราหุล

คุณอ่านย่อหน้าสุดท้ายนั่นคือคำตอบจริงหรือเปล่า? ทำอย่างนั้นและมันจะโหลด rcrc
Daniel Beck

ใช่น่าเสียดายที่มันไม่ได้ช่วยฉันเพราะ: - ฉันไม่ได้ใช้ gnome-terminal (คำถามของฉันเกี่ยวกับเชลล์ทั่วไปและไม่ได้อยู่ในโปรแกรมจำลองเฉพาะ) ฉันหวังว่าจะเป็นโซลูชันที่ใช้ / etc / passwd ฉันสามารถแก้ไขปัญหาของฉันโดยใช้สคริปต์ตัวคลุม แต่ขอบคุณสำหรับคำตอบของคุณ มันยืนยันสิ่งที่ฉันสงสัย (ในยูนิกซ์อื่น ๆ เช่นโซลาริส, สิ่งเดียวกันใช้งานได้)
ราหุล

@blufox เทอร์มินัลส่วนใหญ่ควรอนุญาตให้เรียกใช้งานคำสั่งเฉพาะแทนเชลล์เริ่มต้น /usr/bin/rc -lจะทำงานในกรณีของคุณ ของหลักสูตรนี้จะหลีกเลี่ยง//etc/passwd chsh// คุณยังสามารถของหลักสูตรเขียนสคริปต์หนึ่งบรรทัดที่เพิ่งวิ่ง/usr/bin/rc -lบันทึกไปยังทำให้มันปฏิบัติการและเพิ่มเข้าไป/usr/bin/rcl /etc/shellsเปลือกใหม่ทันที!
Daniel Beck

xterm ไม่ได้ :) และฉันใช้วิธีแก้ปัญหาแบบเดียวกัน - wrapper
ราหุล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.