แหล่งที่มาหลายไฟล์ผ่านการเติมชื่อไฟล์เชลล์


2

ฉันพยายามเปิดใช้งานการเติมข้อความอัตโนมัติของคำสั่ง homebrew ของฉัน Homebrew สร้างโฟลเดอร์โดยอัตโนมัติbash_completion.dและ sym-links ไฟล์เสร็จสิ้นทั้งหมดที่นั่น

$ ls -a `brew --prefix`/etc/bash_completion.d/
.  ..  brew_bash_completion.sh  git-completion.bash

ที่คุณสามารถดูฉันมีสำเร็จและbrew gitดังนั้นฉันพยายามเรียกใช้ไฟล์:

[ -d `brew --prefix`/etc/bash_completion.d ] && source `brew --prefix`/etc/bash_completion.d/*

นี้อยู่ในของฉันและฉันคาดหวังนี้ไปยังแหล่งไฟล์ทั้งหมดใน~/.bash_profile bash_completion.dเมื่อฉันลองใช้ในภายหลังในเทอร์มินัลเพียง แต่ทำสำเร็จbrewเท่านั้น

มีบางอย่างที่ฉันขาดหายไปหรือไม่?

คำตอบ:


2

ความsourceช่วยเหลือช่วยให้พ้นความลึกลับนั้น:

source: source filename [arguments]
    Read and execute commands from FILENAME and return.  The pathnames
    in $PATH are used to find the directory containing FILENAME.  If any
    ARGUMENTS are supplied, they become the positional parameters when
    FILENAME is executed.

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

for f in "$(brew --prefix)"/etc/bash_completion.d/*; do source "$f"; done

อย่างไรก็ตามในขณะที่คุณใช้การทุบตีของโฮมบรูว์มีวิธีที่ดีกว่า: ง่ายๆ

source "$(brew --prefix)"/etc/bash_completion

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

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