.bash_profile หรือ. bashrc สำหรับเชลล์ใน emacs หรือไม่


11

ฉันเขียนนามแฝงสำหรับคำสั่งขนาดใหญ่และเก็บไว้ใน.bash_profileและด้วยความประหลาดใจของฉัน emacs ไม่ได้รับนามแฝงที่ฉันเขียน.bash_profileมา หลังจากค้นหาบางอย่างในอินเทอร์เน็ตฉันสร้าง.bashrcไฟล์ใน $ HOME ด้วยคำสั่ง alias และหลังจากที่ emacs นั้นรับนามแฝง ฉันสับสนเพราะterminal.appต้องใช้นามแฝงจาก.bash_profileแต่ emacs .bashrcใช้เวลานามแฝงเฉพาะใน

ฉันกำลังวิ่งM-x shellและฉันใช้ macOS คนที่สามารถอธิบายได้ว่าสิ่งที่เป็นความสัมพันธ์กับ emacs และ&.bashrc.bash_profile

ยิ่งกว่านั้นฉันจะให้ Emacs อ่าน.bash_profileเพิ่มเติมได้.bashrcอย่างไร?


1
คุณทำให้ Emacs รับ.bashrcนามแฝงของคุณได้อย่างไร ฉันถามสิ่งนี้เพราะ Emac ของฉัน (และดูเหมือนว่าคนอื่น ๆ ) ไม่ได้ทำตามค่าเริ่มต้น
Arch Stanton

@ArchStanton โปรดดู @Vera Johanna ตอบคำถามนี้ นั่นเป็นวิธีเดียวกับที่ฉันใช้ แม้ว่าตอนนี้ผมใช้zshแทนการทุบตี :)
Chakravarthy Raghunandan

คำตอบ:


14

นี่คือพฤติกรรมที่ถูกต้อง .bash_profileสำหรับเชลล์ล็อกอินที่เรียกว่า เช่นเมื่อคุณเข้าสู่ระบบคอมพิวเตอร์ของคุณในโหมดข้อความหรือในจำลอง terminal ไปยังคอมพิวเตอร์เครื่องอื่นผ่านsshหรือtelnetหรือ ...

.bashrcมีไว้สำหรับเชลล์ที่ไม่ใช่การเข้าสู่ระบบเช่นเมื่อคุณเข้าสู่ระบบแล้วและเริ่ม xterm ใหม่หรือในshellโหมดกรณี emacs นี้

โดยปกติแล้ว.bash_profileคำสั่งประกอบด้วยที่จะอ่านใน.bashrcเช่นกัน:

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

ดังนั้น.bashrcจะอ่านทุกครั้งที่เริ่มต้น


ดังนั้นชื่อแทนเป็นของ.bashrc; มันเป็นธรรมเนียมในการสร้างแยก.bash_aliasesและรวมไว้ใน.bashrcผ่านโครงสร้างเดียวกัน:

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

11

นอกเหนือจากจุดที่กำหนดโดย @pingi คุณยังสามารถใช้ไฟล์การกำหนดค่าแยกต่างหากที่จะโหลดสำหรับเชลล์ emacs ( M-x shell):

จากหน้าคู่มือ(emacs) Interactive Shell :

Emacs ส่งเชลล์ใหม่เนื้อหาของไฟล์ '~ / .emacs_SHELLNAME' เป็นอินพุตหากมีอยู่โดยที่ SHELLNAME เป็นชื่อของไฟล์ที่โหลดเชลล์มา ตัวอย่างเช่นหากคุณใช้ bash ไฟล์ที่ส่งไปคือ '~ / .emacs_bash' หากไม่พบไฟล์นี้ Emacs จะลองด้วย '~ / .emacs.d / init_SHELLNAME.sh'

สิ่งนี้มีประโยชน์หากคุณต้องการใช้รูปแบบเชลล์พรอมต์อื่นใน Emacs หรือเพื่อกำหนดฟังก์ชั่นสำหรับส่งไฟล์ไปยัง emacsclient

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