.bashrc memuat alias dari file yang berbeda


11

Saya memiliki file .bashrc, yang ingin saya setup sehingga membaca alias dari file .aliases dan mengaturnya.

Saat ini saya punya:

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

Tetapi saat login saya mendapatkan:

-bash: alias: -fu: not found -bash: alias: $ USER ": not found

-bash: alias: -lart ": tidak ditemukan

File .aliases adalah seperti ini:

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

Jawaban:


13

Saat Anda menggunakan alias ${alias_line}, variabel dipecah menjadi spasi, mengabaikan aturan mengutip.

Ada dua cara untuk memperbaikinya:

  • Hapus semua kutipan dari file alias:

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

    dan menempatkan variabel itu sendiri dalam tanda kutip:

    alias "$alias_line"

    Ini berfungsi karena dalam bash, ll="ls -lart"dan "ll=ls -lart"persis sama.

  • Atau (ini adalah cara yang lebih baik dan lebih umum), memiliki file dengan aliasperintah, dan gunakan .builtin (alias source) untuk mengimpornya.

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

    lalu di ~/.bashrc:

    . ~/.aliases

Metode kedua lebih baik , karena tidak membatasi Anda untuk alias, tetapi juga memungkinkan mendefinisikan fungsi , yang jauh lebih kuat.


Betul. Itu benar-benar pendekatan yang salah. Saya melakukannya sendiri menggunakan perintah ini: saat membaca baris; lakukan echo "alias $ line" >> .aliases_full; selesai <.aliases Saya kemudian baru saja melakukan mv .aliases_full .aliases. ./.aliases #in .bashrc Terima kasih :)
Vladimir
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.