.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: 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"

    Це працює тому, що в bash, ll="ls -lart"і "ll=ls -lart"точно рівнозначні.

  • Крім того (це кращий і більш поширений спосіб), мати файл з aliasкомандами та використовувати .вбудований (ака source) для його імпорту.

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

    то у вашому ~/.bashrc:

    . ~/.aliases

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


Це вірно. Це був абсолютно неправильний підхід. Я робив це сам, використовуючи ці команди: під час читання рядка; робити ехо "псевдонім $ line" >> .aliases_full; зробив <.aliases Я тоді просто зробив mv .aliases_full .aliases. ./.aliases #in .bashrc Все одно дякую :)
Володимир
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.