.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}と、変数はスペースで分割され、引用規則は無視されます。

あなたがそれを修正することができる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番目の方法の方が優れています。エイリアスに限定されないだけでなく、はるかに強力な関数を定義できるからです。


そのとおり。それは完全に間違ったアプローチでした。私はこれらのコマンドを使用して自分で行いました。「エイリアス$ line」をエコーし​​ます>> .aliases_full; done <.aliases次に、mv .aliases_full .aliasesを実行しました。./.aliases #in .bashrcとにかくありがとう:)
ウラジミール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.