「set -o vi」を置く正しいスクリプトファイルは何ですか?

「set -o vi」を置く正しいスクリプトファイルは何ですか?

インタラクティブシェルのすべてのユーザーに対して、デフォルトでこの機能をオンにしたいことを追加する必要があります。私が唯一のユーザーである私のホームシステムでこれを行っていますが、rootは対話型シェルに対してもこの機能を有効にしたいと思います。

set-readline.shこの行を含むファイルを追加する必要があるのか/etc/profile.d/​​、それともそれ自体で行う必要があるのか​​、/etc/profileそれともどこで(たぶんどうすれば)正しく実行するのか疑問に思います。

ベストアンサー1

ディストリビューションにこれがある場合は、通常、Bourne / POSIX準拠のシェルまたは同等のシェルがソースを提供することを意味します/etc/profile.d/etc/profileみんなファイルの/etc/profile.d/*.sh一致 したがって、すべてのユーザーに独自のカスタマイズを追加するには、独自のファイルを作成する必要があります/etc/profile.d/set-vimode.sh

ただし、set -o viこれはシェル設定なので、あるプロセスから別のプロセスに継承することはできません。したがって、ログインシェルだけでなく、すべてのシェルが起動したときに設定する必要があります。これらの人格のグローバル設定の場合、始めるのに最適な場所は/etc/bash.bashrcBashです。異なるシェルには異なるルールがあります。

コメントの Kusalananda と同様に、あなたが言ったように、あなたがシステムの唯一のユーザーであっても、グローバルデフォルトを変更しないように促します。システム管理者チームのメンバーとして働いたことがあり、そのチームの少なくとも1人のメンバーが自分と衝突する強い好みを持っている場合(シェルvi / emacsモードの選択で)、グローバルデフォルトを変更すると、敵意が驚くべき結果をもたらす可能性があります。 (そこに行って、見ました。)

すべてを満たす唯一の解決策は、sudo -sオプションを設定せずにルートになり、ルートシェルがホームディレクトリ(および好みの設定)を使用することです。これにより、チームのすべての管理者は他の人を介さずに自分の好みに対応できます。 。sudoersalways_set_homeroot

sudoより強力な監査要件を持つ一部のシステムでは、rootとして実行されているシェルを使用するのではなく、個々の特権コマンドを実行して、いつ、誰が特権コマンドを使用したかについて明確なログを提供する必要があります。もちろん、ホームシステムでやりたいことは何でもできますが、いつか金融、医療、国家のセキュリティに敏感な環境でシステム管理者として働くことができると思うなら、インタラクティブなルートシェルを避ける習慣を持ってください。あなたによく仕えるでしょう。

おすすめ記事