.bashrc tải bí danh từ các tệp khác nhau


11

Tôi có một tệp .bashrc mà tôi muốn thiết lập để nó đọc các bí danh từ một tệp .aliases và thiết lập chúng.

Hiện tại tôi có:

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

Nhưng khi đăng nhập tôi nhận được:

-bash: bí danh: -fu: không tìm thấy -bash: bí danh: $ USER ": không tìm thấy

-bash: bí danh: -lart ": không tìm thấy

Tệp .aliases giống như thế này:

psu = "ps -fu $ NGƯỜI DÙNG" ll = "ls -lart"
pico = 'nano'

Câu trả lời:


13

Khi bạn sử dụng alias ${alias_line}, biến được chia nhỏ tại các khoảng trắng, bỏ qua các quy tắc trích dẫn.

Có hai cách bạn có thể khắc phục:

  • Xóa tất cả trích dẫn từ tệp bí danh:

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

    và đặt biến chính nó trong dấu ngoặc kép:

    alias "$alias_line"

    Điều này hoạt động vì trong bash, ll="ls -lart""ll=ls -lart"hoàn toàn tương đương.

  • Ngoài ra (đây là một cách tốt hơn và phổ biến hơn), có một tệp với aliascác lệnh và sử dụng .nội dung dựng sẵn (aka source) để nhập nó.

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

    sau đó trong ~/.bashrc:

    . ~/.aliases

Phương pháp thứ hai là tốt hơn , vì nó không giới hạn bạn trong các bí danh, nhưng cũng cho phép xác định các hàm , mạnh hơn nhiều.


Đúng rồi. Đó là một cách tiếp cận hoàn toàn sai lầm. Tôi đã tự làm điều đó bằng cách sử dụng các lệnh này: trong khi đọc dòng; làm tiếng vang "bí danh $ line" >> .aliases_full; xong <.aliases Tôi vừa mới làm mv .aliases_full .aliases. ./.aliases #in .bashrc Dù sao cũng cảm ơn :)
Vladimir
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.