.bashrc กำลังโหลดนามแฝงจากไฟล์อื่น


11

ฉันมีไฟล์. bashrc ซึ่งฉันต้องการตั้งค่าเพื่อให้อ่านนามแฝงจากไฟล์. aliias และตั้งค่า

ปัจจุบันฉันมี:

# User specific aliases and functions
while read alias_line
do
        echo `alias ${alias_line}`
done < .aliases

แต่เมื่อเข้าสู่ระบบฉันจะได้รับ:

-bash: alias: -fu: not found -bash: alias: $ USER ": ไม่พบ

-bash: alias: -lart ": ไม่พบ

ไฟล์. aliases เป็นดังนี้:

psu = "ps -fu $ USER" ll = "ls -lart"
pico = 'nano'

คำตอบ:


13

เมื่อคุณใช้alias ${alias_line}ตัวแปรจะแยกออกที่ช่องว่างโดยไม่สนใจกฎการอ้างอิง

มีสองวิธีที่คุณสามารถแก้ไขได้:

  • ลบข้อความทั้งหมดจากไฟล์นามแฝง:

    ll=ls -lart
    psu=ps -fu $USER
    

    และวางตัวแปรในเครื่องหมายคำพูด:

    alias "$alias_line"

    งานนี้เพราะในทุบตีll="ls -lart"และ"ll=ls -lart"เทียบเท่า

  • อีกทางหนึ่ง (นี่เป็นวิธีที่ดีกว่าและทั่วไปกว่า) มีไฟล์ที่มีaliasคำสั่งและใช้.builtin (aka source) เพื่อนำเข้า

    alias pico='nano'
    alias psu='ps x'
    alias ll='ls -lart'
    

    จากนั้นใน~/.bashrc:

    . ~/.aliases

วิธีที่สองดีกว่าเนื่องจากไม่ได้ จำกัด ให้คุณใช้นามแฝง แต่ยังอนุญาตให้กำหนดฟังก์ชันซึ่งมีประสิทธิภาพมากกว่า


ถูกตัอง. มันเป็นวิธีการที่ผิดอย่างสมบูรณ์ ฉันทำเองโดยใช้คำสั่งเหล่านี้: ในขณะที่อ่านบรรทัด; ทำเสียงสะท้อน "alias $ line" >> .aliases_full; ทำ <.aliases แล้วฉันก็ทำ mv .aliases_full .aliases ./.aliases #in .bashrc ขอบคุณอยู่ดี :)
Vladimir
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.