すべてのユーザーのエイリアスを事前設定するにはどうすればよいですか?


38

Ubuntu 14.04.2があります。すべてのユーザーが特定のエイリアスのセットを自動的に持つようにしたい。個人の.bashrcにエイリアスを設定していますが、他のユーザーに手動でコピーする必要はありません。理想的には、新しく作成されたユーザーに対してもこれらを自動的に設定する必要があります。


1
「プリセット」とは、すべての新しいユーザーを特定のエイリアスを使用して作成し、簡単に再構成できるようにすることを意味しますか?または、すべてのユーザーが常にそれらを使用できるようにグローバルエイリアスを作成することを意味しますか?混乱させる)?または、他の何か?関連:.bashrcと.bash_profileのアンダータンディング(奇妙なタイトルにもかかわらず、私はその質問とこの質問は実際には非常に似ていると信じています)。
エリアケイガン

回答:


50

スクリプトを作成して、/etc/profile.d/すべてのユーザーのエイリアスを作成できます。

  1. 00-aliases.shという名前のファイル(またはその他のファンシーな名前)を作成します/etc/profile.d

    gksu gedit /etc/profile.d/00-aliases.sh
    
  2. このファイルにエイリアスを入れます。例:

    alias foo='bar --baz'
    alias baz='foo --bar'
    
  3. ファイルを保存する

  4. 開いているターミナルを再起動して、変更を適用します。
  5. 楽しい!

いくつかのメモ:

  • /etc/profileは、前に実行されるグローバルファイルです~/.profile
  • /etc/profile.d/ によって呼び出されるスクリプトを含むフォルダーです /etc/profile
  • ときは/etc/profile(あなたが起動したときに/シェルログイン)と呼ばれ、それはで終わるすべてのファイルを検索.sh中に/etc/profile.d/、これらのいずれかのコマンドでそれらを実行します:

    source /etc/profile.d/myfile.sh
    

    . /etc/profile.d/myfile.sh
    
  • 00-ファイル名の前に置いて、残りのスクリプトの前に実行するようにします。
  • でエイリアスを追加することもできます/etc/profileが、これはお勧めしません。

2
完全に動作します!/etc/profile.dの目的について簡単に説明してもらえますか?
ブライアンサイズモア

1
@BrianSizemore:いくつかの説明を加えて回答を更新しました。他に質問はありますか?
ヘリオ

1
これは非常によく説明しています。明確化は、他の用途も開発するのに役立ちます。すべての助けてくれてありがとう!
ブライアンサイズモア

4
この回答の方法は使用しないでください。(または)内の.shファイルのエイリアスは、ログインシェルに対してのみ定義され、非ログインインタラクティブシェルでは機能しません。環境変数とは異なり、bashは子プロセスにエイリアスをエクスポートできません。子bashシェルもエクスポートできません。このメソッドは、仮想コンソールまたはSSH経由でログオンして取得した元のシェルなどのログインシェルでのみテストされている場合、適切に動作するように見えるかもしれませんが、子シェルは失敗し、GUIターミナルウィンドウで起動されたシェルでも失敗します。/etc/profile.d//etc/profile
エリアケイガン

2
@Helio 私の答えとUndertanding .bashrcに.bash_profileの詳細な説明とともに、目標が何であるかに応じて、2つの他の方法を提供します。この質問またはその質問のいずれかが重複と見なされるかどうかはわかりません。私は彼らのニーズについてOPから説明を得るためにこの質問にコメントしました。私はこの質問はより狭く、1つのよりスコープされたと私はそこに私の長いものに材料の一部をカバーし、ここで、短い答えを投稿することがOKになるだろう。(今のところ、私はOPから私のコメントに返信をもらいたいと思っています。)
エリアカガン

6

ここで指摘したように、次の場所にグローバルエイリアスを追加することをお勧めし /etc/bash.bashrcます。

alias foo='bar --baz'
alias baz='foo --bar'

、特定の(ログインしていない)シェル/etc/profile.dはスクリプトを無視できるためです。なぜ機能/etc/profile.dしなかったのかを理解するのに何時間もかかりました。

シェルの違いについては、たとえばhttps://askubuntu.com/a/606882/および .bashrcと.bash_profileの理解を参照してください。


5

エイリアスは、シェル内でのみ機能します。実行可能ファイルと同じくらい広くアクセスできるものが必要な場合は、小さなショートカットスクリプトをに追加できます/usr/bin。例:

#!/bin/sh
ls -l "$@"

"$@"実行に至るまで、すべての引数を渡します。スクリプトの名前は、実行可能ファイルの名前になります。

ソース:https : //unix.stackexchange.com/a/52509/15954


この答えは無関係のようです。受け入れられた答えは質問に正しく答えますが、これは回避策を提供しているようです。
ブライアンサイズモア

3
@BrianSizemore私はあなたに同じ質問をしましたが、私の場合により適切であったこのソリューションにつまずきました。同様の状況で他の人を助けることを願っています。多くの人にとって、エイリアスは問題ありません。
jtpereyda

1
@BrianSizemoreこの回答は、よくある誤解(これも私が持っていた)を明らかにし、有用で直接関連しています。
a20

0

/ etc / bashrc

  • システム全体の機能とエイリアス
  • 環境関連は/ etc / profileにあります

何をしているのかわからない限り、このファイルを変更するのは得策ではありません。/etc/profile.d/にcustom.shシェルスクリプトを作成して、環境にカスタム変更を加えることをお勧めします。これにより、将来の更新でマージする必要がなくなります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.