Bourne シェル: ログインではなく対話式では何をしますか?

Bourne シェル: ログインではなく対話式では何をしますか?

私がこう尋ねる理由はhttps://unix.stackexchange.com/a/46856/84749、私が始まったときにscreen私がやっていたことは「会話型、非ログイン」でした。実際に起こるのは、BASHではなくBourneシェルシステムにログインしていますが、ログインすると~/.profile正しく実行され、エイリアスが設定されることです。しかし、実行すると、screenこれらのエイリアスは失われて実行されないように見え、~/.profile他の~/.loginものは試していません。

私はRaspberry Pi 3でLibreELECを実行しています。

ベストアンサー1

LoginSessionは、呼び出さshれるとユーザーのログインセッションを読み取ります~/.profile。これを実行した後、変数がファイル名に設定され、ファイルが存在する場合、ENVシェルはそのファイルを使用してログインセッションをさらに初期化します。

ログインシェル以外の対話型シェルは$ENVifENV設定のみを使用し、読み取りは使用しません~/.profile

非対話型シェルは両方のファイルを使用しないでください。

通常、1つはENV次の最後にエクスポートされます~/.profile

ENV="$HOME/.shrc"     # for example
export ENV            # may be done as export ENV="..." too, in most shells.

たとえば、asまたはwithbashで呼び出されるとshどうなりますかbash --posix

~/.profile必要に応じて両方のファイル(および)を使用できますが、$ENV構成ファイルは必要なプロセスまたは他のユーザーデーモンを起動PATHするために一度だけ設定する必要がある環境変数を設定およびエクスポートする場所です。fetchmailなどを使用することが予想され、ファイルは設定(GnuPGを使用している場合)、エイリアス設定(エイリアスはサブシェルから継承されないため)などの特定のシェル$ENVセッション/ TTYの特定を設定する場所です。GPG_TTY

シェルはデフォルトでおよびをksh93使用しますが、それを特定の方法で解釈します。~/.profile$ENV$ENVもし $ENV/./またはで始めると、././システム全体の設定ファイル(例)は使用されません/etc/ksh.kshrc

このファイル名がこのファイル名に設定されていないか、明示的にまたはからインポートされていない限り、このファイルは~/.login使用されません。shENV~/.profile$ENV

おすすめ記事