.bashrc загрузка псевдонимов из другого файла

11

У меня есть файл .bashrc, который я хочу настроить, чтобы он считывал псевдонимы из файла .aliases и настраивал их.

В настоящее время у меня есть:

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

Но при входе я получаю:

-bash: псевдоним: -fu: не найдено -bash: псевдоним: $ USER ": не найдено

-bash: псевдоним: -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"

    Это работает, потому что в Bash, ll="ls -lart"и "ll=ls -lart"в точности эквивалентны.

  • В качестве альтернативы (это лучший и более распространенный способ), создайте файл с aliasкомандами и используйте .встроенный (aka source) для его импорта.

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

    тогда в вашем ~/.bashrc:

    . ~/.aliases

Второй метод лучше , так как он не ограничивает вас псевдонимами, но также позволяет определять функции , которые гораздо более мощные.

user1686
источник
Вот так. Это был совершенно неправильный подход. Я сделал это сам, используя эти команды: пока читал строку; do echo "alias $ line" >> .aliases_full; сделано <.aliases Я тогда просто сделал mv .aliases_full .aliases. ./.aliases #in .bashrc Все равно спасибо :)
Владимир