อะไรนะ .bashrc จริง ๆ แล้วทำอย่างไร


13

เมื่อฉันป้อนเช่น นามแฝงใหม่ใน.bashrcไฟล์ของฉันฉันไม่สามารถใช้ในหน้าต่างเทอร์มินัลนั้นทันทีและจนกระทั่งเมื่อเร็ว ๆ นี้ฉันคิดว่าฉันต้องรีสตาร์ทเทอร์มินัลเพื่อโหลด.bashrcไฟล์ซ้ำ ถ้าอย่างนั้นฉันก็พบว่า

. .bashrc

นี่จะโหลด.bashrcไฟล์ในหน้าต่างปัจจุบันและฉันไม่ต้องรีสตาร์ท ครีบนี้ใช้งานได้ แต่เกิดอะไรขึ้นจริงหรือ ทำไม.bashrcไฟล์ถึงทำการรีโหลด


1
ด้วย.คุณ "แหล่ง" ไฟล์ ความหมายมันจะถูกดำเนินการโดยทั่วไป
Der Hochstapler

ความเป็นไปได้ที่ซ้ำกันของแหล่งที่มาทำอะไร
Dan D.

1
@DanD ในขณะที่คำตอบเดียวกันคำถามที่ฟังดูค่อนข้างแตกต่างสำหรับฉัน
Calimo

1
@Dan D. คำถามนี้เป็นเรื่องเกี่ยวกับ mening ของ . จนถึงตอนนี้ฉันมักจะคิดเกี่ยวกับ เป็นชวเลขสำหรับไดเรกทอรีปัจจุบันและ .. เป็นชวเลขสำหรับไดเรกทอรีแม่ ฉันไม่เคยรู้เลย เป็นนามแฝงของแหล่งข้อมูล (ซึ่งเป็นแนวคิดใหม่ที่สมบูรณ์สำหรับฉัน) หากมีคนมาที่นี่และต้องการทราบความแตกต่างที่ฉันพบความแตกต่างระหว่างการดำเนินการสคริปต์ทุบตีและการจัดหาสคริปต์ทุบตีคืออะไร เป็นประโยชน์อย่างมาก
จอบ

คำตอบ:


17

เพราะ.เป็นคำสั่ง

มันเป็นคำสั่งในตัวของเชลล์ที่อ่านไฟล์ที่มีชื่อและดำเนินการคำสั่งในกระบวนการเชลล์ปัจจุบัน

เชลล์เป้าหมายอีกครั้งยังมีsourceคำเหมือนสำหรับคำสั่งนี้ แต่นี่คือ Bashism (ที่บอร์นกระสุนอีกครั้งเอามาจาก C เชลล์) แม้ว่ามันจะเป็นความจริงที่ว่าบอร์นเชลล์ใช้ร่วมกับ TENEX C Shell, Z Shell และอื่น ๆ (แต่ไม่ใช่ Korn เชลล์หมายเหตุ) .ยูนิกซ์ข้อมูลจำเพาะเดี่ยวเพียงมาตรฐาน

นอกจากนี้โปรดทราบว่าพฤติกรรมของ./ sourceการเปลี่ยนแปลงรายละเอียดขึ้นอยู่กับว่าเชลล์ Bourne Again กำลังทำงานในโหมดที่เข้ากันได้กับ POSIX หรือไม่ (เช่นนี้เป็นเหมือนเชลล์อื่น ๆ แม้ว่าพฤติกรรมที่ไม่ได้มาตรฐานจะไม่เหมือนกับเชลล์อื่นด้วย Z เชลล์ตัวอย่างมีกลไกเชลล์สคริปต์ที่คอมไพล์แล้วและsourceแตกต่างจาก.การจัดการพา ธ การค้นหาอย่างละเอียดKorn เชลล์.จะใช้ฟังก์ชันเชลล์ตัวอย่างอื่น)

~/.bashrcเป็นเพียงหนึ่งในหลาย ๆ ไฟล์ที่มีเนื้อหา (ขึ้นอยู่กับวิธีการเรียกใช้กระบวนการเชลล์) ที่มาโดยอัตโนมัติเมื่อเริ่มต้นเชลล์ ไม่มีอะไรที่ห้ามไม่ให้มันถูกแหล่งด้วยตนเอง แม้ว่าการกระทำของมันจะไม่ใช่ idempotent แต่คุณอาจมีโปรแกรมแก้ไขบางอย่างที่ต้องทำหลังจากนั้น

อ่านเพิ่มเติม


1

help . จะบอกคุณ:

.: . filename [arguments]

Execute commands from a file in the current shell.

Read and execute commands from FILENAME in the current shell.  The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.

Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.

บอกว่า. .bashrcประมวลผล (แหล่งที่มา) ไฟล์.bashrcซึ่งทำให้การเปลี่ยนแปลงที่ทำกับไฟล์ที่มีอยู่ในเซสชั่นปัจจุบัน

โดยค่าเริ่มต้น~/.bashrcจะอ่านเมื่อเข้าสู่ระบบ

.sourceเป็นคำพ้องสำหรับ


1

.คำสั่งเป็นสิ่งเดียวกับsourceคำสั่งของคุณที่รัน.bashrcไฟล์ สิ่งนี้จะเพิ่มนามแฝงทั้งหมดที่คุณกำหนดไว้และการตั้งค่าตัวแปร / เชลล์อื่น ๆ ในสภาพแวดล้อมปัจจุบัน จากsourceหน้าความช่วยเหลือของ:

source: source filename [arguments]
    Execute commands from a file in the current shell.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.