複数のユーザーに単一の.bashrcファイルを設定するにはどうすればよいですか?


30

作業中、エイリアスコマンドをbashrcに常に追加する必要があります。これらのコマンドのほとんどは、他のユーザーが実行する必要があります。外部ソースからbashrcにエイリアスコマンドを追加する方法はありますか?

回答:


40

ユーザーのホームディレクトリにある多くの設定ファイルは、単にそれらを上書き/追加します/etc-たとえば、ユーザーのホームのGIMPの設定は~/.gimp-2.*、システム全体の設定に追加され/etc/gimp/2.0ます。

ですから~/.bashrc、システム全体の設定ファイル/etc/bash.bashrc (関数/エイリアス用)または/etc/profile (環境用)を編集できます-完全なリストは以下から入手できますman bash

FILES
       /bin/bash
              The bash executable
       /etc/profile
              The systemwide initialization file, executed for login shells
       /etc/bash.bash_logout
              The systemwide login shell cleanup file, executed when a login shell exits
       ~/.bash_profile
              The personal initialization file, executed for login shells
       ~/.bashrc
              The individual per-interactive-shell startup file
       ~/.bash_logout
              The individual login shell cleanup file, executed when a login shell exits
       ~/.inputrc
              Individual readline initialization file

この警告は、ファイル内のいくつかのLinuxシステムに対して表示されます。

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

そのため、これらのファイルを編集したり、最初にバックアップしたり(cp /etc/bash.bashrc /etc/bash.bashrc-backupたとえば)、シェルスクリプトを作成したり/etc/profile.dできます。たとえば、次のコマンドで(sudo / as rootで)作成できます。

touch /etc/profile.d/custom.sh
chmod +x /etc/profile.d/custom.sh

それでそれを開きます nano /etc/profile.d/custom.sh

#!/bin/sh
alias ls='ls -lah'

そして、の出力に表示されている場合、それは見て動作するかどうかをチェックalias-あなたは(あなたが実行している、したくない場合は、任意の変更を確認するためにログアウト/ログインまたは再起動する必要があるかもしれないことに注意source /etc/profile何らかの変更がうまくいくかもしれない後)

[編集:このデッドリンクを削除] www.thelinuxdaily.com/2010/08/setup-a-universal-user-profile-with-etcprofile-dcustom-sh/]


5
たくさんの良い提案があります。他にも選択肢があると思いますが、これも言及する価値があります。編集/etc/skel/.bashrcして、~/.bashrc新しく作成されたユーザーのコンテンツがどのように見えるかを変更できます。
カスペルド14

@kasperd -すてきなアイデア(あなたがしたい場合、あなたがそれに答えを行うことができます)
Wilf

私の経験では、動作~/.bash_logout/etc/bash.bash_logoutません。:(
Paddy Landau 14

で私の知る限りの別名/etc/profile.d/ではないサブプロセス権によってピックアップされますか?エイリアスはBashがログインシェルである場合にのみ使用できますか?
フランクリンゆう

それらの一部は、TTYが唯一の環境として使用されている場合にのみ機能し、デスクトップ端末では使用されない場合があると考えています。ただし、これを検証するにはテストする必要がありますが、現時点ではできません。
ウィルフ

7

に行く /etc/bash.bashrc

vim /etc/bash.bashrc

エイリアスを作成します。

最後の行にエイリアスを追加します。

エイリアスabc = "whatever"

そのエイリアスは、すべてのユーザーに対してグローバルになります。

しかし、セキュリティ上の理由から、それをお勧めしません。

ありprofile.d、ユーザー環境ファイルを含むディレクトリは、

に行きます

cd /etc/profile.d/

vimエイリアス

ここにエイリアスを追加します。

システムファイルに影響を与えません。環境ファイルを操作するのに安全で正しい方法です。


3

ここにはすでに受け入れられた答えがありますが、/ etc / profile.dなどのファイルをいじるのではなく、何らかの環境モジュールを使用してユーザー環境のシステム全体の構成を処理することを検討することをお勧めします。多数のシェルにわたってこのコントロールを1か所で管理します。Lmod(非常に活発な開発中)、C / TCLモジュール(従来のソリューション)、またはCmod(軽量)。


1

私がそれを正しくやっているかどうかわかりませんが、/ home / ComunAtodosディレクトリ(Linuxネイティブディレクトリではないことを明らかにするために大文字とスペイン語で)を保持し、.bashrc、.nanorc、 .bash_aliasesがあります。次に、/ etc / skel / .profileでそれらを参照して、新しいユーザーがそれらを指すようにし、それらを必要とする特定のユーザーにのみ追加します。


-1

私はLinuxオペレーティングシステムを初めて使用しますが、システムファイル/etc/.bashrcファイルではなく、すべてのユーザーの.bashrcファイルを変更するbashスクリプトのスケッチを作成しました。

#!/bin/bash

X=$( cat etc/passwd | cut -f1 -d: ) #All-users

For X in /home/*/.bashrc ; do 

echo "alias ls='ls -al'" >> $X

2>/dev/null

done

source $X

exit 0

わかりましたので、私はそのスクリプトが機能することを知っていますが、障害がない場合はそうではありません:)また、すべてのユーザーが関与しないように変更することもできます。おそらく、.bashrcファイルを必要とするすべてのユーザーのためにファイルを作成しますカスタマイズされました。


3
最初の行(/ etc / passwdを読む場所)は何もしないようです。4行目は間違いのようです(そして、エラーを抑制したい理由がわかりません)。「exit 0」は冗長です。これには、すべてのユーザーが既に.bashrcファイルを持っている必要があり、行が既にファイルにあるかどうかに関係なく常に追加されます。
thomasrutter

その行ですべてのユーザーの名前を取得しようと考えていましたか?しかし、今考えてみると、</ etc / passwdだけをカットできます。そのリストには多くの名前があったので、bashrcfiléを持っていない人のためにITにエラーを作らせたくありませんでした。行が存在しない場合にのみ追加するにはどうすればよいですか?そして、このタイプのラスク用の適切なスクリプトを書くことはできますか?私は1週間だけLinuxを使用しています。
ファハドラヒミ

既にいくつかのスキルを持っているように見えますが、このチュートリアルはシェルスクリプトに適したシェルスクリプト:shellscript.shです。まだ存在しない場合にのみ行を追加する方法などの他の質問については、ここで新しい質問として気軽に質問してください。
thomasrutter
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.