Ubuntu 14.04.2があります。すべてのユーザーが特定のエイリアスのセットを自動的に持つようにしたい。個人の.bashrcにエイリアスを設定していますが、他のユーザーに手動でコピーする必要はありません。理想的には、新しく作成されたユーザーに対してもこれらを自動的に設定する必要があります。
Ubuntu 14.04.2があります。すべてのユーザーが特定のエイリアスのセットを自動的に持つようにしたい。個人の.bashrcにエイリアスを設定していますが、他のユーザーに手動でコピーする必要はありません。理想的には、新しく作成されたユーザーに対してもこれらを自動的に設定する必要があります。
回答:
スクリプトを作成して、/etc/profile.d/
すべてのユーザーのエイリアスを作成できます。
00-aliases.sh
という名前のファイル(またはその他のファンシーな名前)を作成します/etc/profile.d
。
gksu gedit /etc/profile.d/00-aliases.sh
このファイルにエイリアスを入れます。例:
alias foo='bar --baz'
alias baz='foo --bar'
ファイルを保存する
いくつかのメモ:
/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
が、これはお勧めしません。.sh
ファイルのエイリアスは、ログインシェルに対してのみ定義され、非ログインインタラクティブシェルでは機能しません。環境変数とは異なり、bashは子プロセスにエイリアスをエクスポートできません。子bashシェルもエクスポートできません。このメソッドは、仮想コンソールまたはSSH経由でログオンして取得した元のシェルなどのログインシェルでのみテストされている場合、適切に動作するように見えるかもしれませんが、子シェルでは失敗し、GUIターミナルウィンドウで起動されたシェルでも失敗します。/etc/profile.d/
/etc/profile
ここで指摘したように、次の場所にグローバルエイリアスを追加することをお勧めし /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の理解を参照してください。
エイリアスは、シェル内でのみ機能します。実行可能ファイルと同じくらい広くアクセスできるものが必要な場合は、小さなショートカットスクリプトをに追加できます/usr/bin
。例:
#!/bin/sh
ls -l "$@"
"$@"
実行に至るまで、すべての引数を渡します。スクリプトの名前は、実行可能ファイルの名前になります。