web-dev-qa-db-ja.com

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

Terminalをいじってみると、permanentエイリアスを作成する方法がたくさんあることに気付きました。

私は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に入れる

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

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

8
Strae

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

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

シンボリックリンクの詳細を読む here および here

実際には、2番目の方法でのみエイリアスを作成しています。

エイリアスを使用すると、単純なコマンドの最初のWordとして使用される文字列をWordに置き換えることができます。シェルは、aliasおよびunalias組み込みコマンドを使用して設定および設定解除できるエイリアスのリストを保持します(以下のShell BUILTINコマンドを参照)。各単純コマンドの最初のWordは、引用符で囲まれていない場合、エイリアスがあるかどうかを確認するためにチェックされます。その場合、そのWordはエイリアスのテキストに置き換えられます。

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

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

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

.bash_aliasesメソッドは、エイリアスを~/.bashrcに置くことと同じことをexactlyを達成しますが、より簡単になるという追加の利点がありますプログラムによって解析および操作されます。

. ~/.bash_aliasesは、現在実行中のシェルのコンテキストでソース(ロード)_~/.bash_aliases_を意味します。

9
Li Lo