web-dev-qa-db-ja.com

.bashrc別のファイルからエイリアスをロードする

.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'

11
Vladimir

alias ${alias_line}を使用すると、変数はスペースで分割され、無視の引用規則が使用されます。

それを修正する方法は2つあります。

  • エイリアスファイルからすべての引用符を削除します。

    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
    

2番目の方法の方が優れていますエイリアスに制限されないだけでなく、関数を定義することもできます。パワフル。

13
user1686