エイリアス:.bash_rc、.bash_aliases、/ usr / local / binの違い


9

ターミナルで遊んでみて、永続的なエイリアスを作成する方法はたくさんあることに気づきました。

私はLinux初心者です。私が知っていることから、次のことをしています。

  1. sudo ln -s /path/to/executable /usr/local/bin/desired_alias
  2. 追加desired_alias = '/path/to/executable'します~/.bashrc
  3. これらの行のコメントを解除し~/.bashrcます。

    if [ -f ~/.bash_aliases ]; then
        . ~/.bash_aliases
    fi
    

    に入れdesired_alias = '/path/to/executable'~/.bash_aliases

すべて同じ効果があります。

1番目と2番目の方法の違いは何ですか?

回答:


10

最初の方法では、エイリアスを作成せず、シンボリックリンクを作成します。シンボリックリンクはシンボリックリンクの略です:

シンボリックリンクは、他のファイルへのポインタとして機能するファイルです。[...]シンボリックリンクは、その内容が別のファイルのパス名である文字列である特別なタイプのファイルで、リンクが参照するファイルです。つまり、シンボリックリンクは別の名前へのポインタであり、基になるオブジェクトへのポインタではありません。

ここここでシンボリックリンクの詳細を読んでください

2番目の方法でのみ、実際にはエイリアスが作成されます。

エイリアスを使用すると、単純なコマンドの最初の単語として使用される文字列を単語の代わりに使用できます。シェルは、aliasおよびunalias組み込みコマンドで設定および設定解除できるエイリアスのリストを維持します(下記のシェル構築コマンドを参照)。各シンプルコマンドの最初の単語は、引用符で囲まれていない場合は、エイリアスがあるかどうかが確認されます。その場合、その単語はエイリアスのテキストで置き換えられます。

コマンドを入力してシェル(この場合はbash)で解釈できる場所であればどこでもエイリアスを定義できますが、他のシェルでエイリアスを使用するには、シェルによって解釈されるファイルでエイリアスを定義する必要があります起動時(シェルの起動、コンピューターの起動ではない)。

bashの場合、これらは/etc/bash.bashrc(システム全体)および~/.bashrcです。これらのファイルは、シェルが対話モードで起動したときに解釈されます(を使用する場合などTerminal)。プロファイルファイルは目的が異なるため、ここでは触れません。

そのため、~/.bashrcすべての対話型シェルで使用できるようにエイリアスを追加する必要があります。

この.bash_aliasesメソッドは、エイリアスを挿入するのとまったく同じことを実行します~/.bashrcが、プログラムで解析および操作しやすくなるという追加の利点があります。

. ~/.bash_aliases手段源(負荷)_~/.bash_aliases_現在実行中のシェルのコンテキストです。


@liloチュートリアルで私を倒した!+1
myusuf3 2010

@gc私は袋を叩いているので、ワイルドになります:)
Li Lo

@lilo haha​​hha :)
myusuf3 2010

1
同じように機能していると思われるかもしれませんが、そうではありません。私の回答で参照したシンボリックリンクの資料を読んでください。シンボリックリンクとエイリアスは異なる目的で使用され、異なる目的で作成されました。シンボリックリンクがエイリアスのように機能しない理由の例を示すには、これを試してください。エイリアスpx = "ps axu"のようなエイリアスを定義します。次に、シンボリックリンクで同じことを実行してみます。
Li Lo

1
@Li Lo:私はsynlinkと/ usr / local / binの違いを理解しましたが、私の質問(それはおそらく一般的な質問とは少し話題から外れています)は次のとおりです。
Strae
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.