私はFreeBSDでBourneシェルを試してみたかったので、それを使用するための設定を始めました。
私は.shrc
プロンプトを設定し、viモードを有効にし、いくつかのエイリアスを設定し、いくつかの変数をエクスポートしました。
しかし、.profile
いくつかの変数もデフォルトでエクスポートされることがわかりました。
私が理解したのは、Bourneシェルが.profile
起動するたびにソースコードを取得することです。それでは、.shrc
と両方がある(歴史的)理由は何ですか.profile
?
答え1
Bourneシェルに最も近いのはOpenSolarisのHeirloom Bourneシェルです。これは実際にはオープンソースプログラムではなく、最近ではほとんどすべてのオペレーティングシステムで見つけることができません。これはshells/heirloom-sh
FreeBSDポートコレクション(通常はインストールされています/usr/ports
)にあります。
これはいいえ sh
。
それFreeBSDのDebian Almquistシェル(少し変更されたバージョン)です。
Heirloom Bourneシェルはjsh
。~/.shrc
sourced であり~/.profile
、ログインシェルで呼び出されたときにのみ提供されます。それが出てくる唯一の他のファイルは/etc/profile
。
Bourneシェルは、後に出てきた複雑さを全く持たず、さまざまなファイルを持っていました。皮肉なことに、これらすべての傾向を始めたのはCシェル(元のBSDが好むシェル)でした。その他.rc ファイル。
ガボBourneシェルはそうではありません。かなりボンシェル。たとえば、ジョブ制御コマンドがあります。 Bourneシェルには、これらの機能を持たないオペレーティングシステム用に作成されたため、この機能はありません。 OpenSolarisの歴史のいくつかの変更は、これが元のBourneシェルではないことを意味します。私が言ったように、これは現在どのオペレーティングシステムでも不可能です。商業ユニセスでも、人々は1980年代後半からBourneシェルの更新版を受け取り、そのような新しいSystem 5 Release 4コンテンツを追加しました。
~/.shrc
それでは、Bourneシェルで動作すると主張し、コメントにsh(1)のマニュアルページを参照するのはなぜですか?
デフォルトでは、このコメントは嘘です。
sh
AlmquistシェルはFreeBSDとNetBSDで使用され、FreeBSDではわずかに変更されたバージョンを使用します。ダーバンAlmquistシェルは、2000年代初頭にDebianの従業員が作成したNetBSD Almquistシェルを少し変更しました。
sh(1) マニュアルを見ると、これが Stephen R. Bourne が作成したシェルではなく、Kenneth Almquist が作成したシェルであることがわかります。 Bourneシェルを試したい場合は、sh
FreeBSDで実行しても役に立ちません。
~/.profile
マニュアルでは、ファイルを取得するためにインタラクティブAlmquistシェルを手動で設定する方法も説明します~/.shrc
。デフォルトでは、これはAlmquistシェルでは発生せず、~/.shrc
標準的なものではありません。
~/.shrc
/usr/share/skel/
作成時からホームディレクトリにダンプされた一般ファイルですpw useradd
。通常、実際にはどのシェルでも何もしません。
何かを試したい場合本物難解で、Heirloom Bourneシェルよりもはるかに難解なFreeBSDは、shells/osh
ポートと同様にThompsonシェルも提供します。
グリッパーについては、Heirloom Bourneシェルを試して学習する前に(または少なくともその前に)Almquistシェルを試して学習することをお勧めします。#!/bin/sh
もちろん、FreeBSDのすべてのスクリプトがそれを使用しているので、知っておくと便利です。
港にある渡辺貝殻はshells/yash
体験してみるもう一つの場所です。 WatanabeとDebian Almquistシェルはどちらも非標準のコマンドemacs
ライン編集モードを持っていますが、POSIX準拠のシェル動作のサブセットのみを持つものに最も近い環境を提供します。 ☺
答え2
.shrc
との違いについて.profile
。今日、私は偶然にNetBSD-10構成のeixstenceを見つけました、そして.shrc
このシステムを見てみましょう。 NetBSD に.shrc
直接表示されません。シェル (1) どちらにもありませんが、apropos
変数の内容として表示されますENV
。
ENV
参照構成ファイルは、以下で使用されます。シェル (1)ページの一部をコピーしました。 HTH。さようなら
したがって、ユーザーはログイン時にのみ実行されるコマンドを.profileファイルに配置し、各シェルに対して実行されるコマンドをENVファイルに配置する必要があります。 ENV変数をファイルに設定するには、ホームディレクトリの.profileに次の行を入力します。