9

У меня есть файл .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"
пико = «нано»

1 ответ1

12

Когда вы используете alias ${alias_line} , переменная разбивается на пробелы, игнорируя правила цитирования.

Есть два способа исправить это:

  • Удалить все цитаты из файла псевдонимов:

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

    и поместите саму переменную в кавычки:

    alias "$alias_line"
    

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

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

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

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

    . ~/.aliases
    

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .