GNU/Linux >> Linux の 問題 >  >> Linux

〜/ .bash_profileが機能しないのはなぜですか?

LinuxMintを使用しています。ログインシェル(cat /etc/passwd | grep myUserName )はbashです。

グラフィカルデスクトップ環境を起動し、そこからターミナルエミュレーターを実行すると、.bash_profileが表示されます。 ソースではありません(exportである環境変数 その中のedは設定されていません)。しかし、テキストコンソール( ctrl )からログインした場合 + alt + F1 )または手動でbash -lを実行します ターミナルエミュレータから、.bash_profile 正常に動作します。

.bash_profileだと思うのは間違っていますか? Xが起動し、すべてのexportが起動するときにソースを指定する必要があります ‘ed varsは、Xから実行されているターミナルで利用可能である必要がありますか?

P.S.すべてを.bashrcに配置します .bash_profileから調達します 良いアイデアではありません(https://stackoverflow.com/questions/902946/):環境関連のものは一度だけ調達する必要があります。

承認された回答:

ファイル~/.bash_profile ログインシェルの場合、bashによって読み取られます。これは、テキストモードでログインしたときに得られるものです。

Xでログインすると、起動スクリプトは/bin/shによって実行されます。 。 UbuntuとMintでは、/bin/sh ダッシュであり、bashではありません。 Dashとbashはどちらも同じコア機能を備えていますが、ダッシュは高速で小型にするためにこれらのコア機能に固執しますが、bashはより多くのリソースを必要とするという犠牲を払って多くの機能を追加します。追加の機能を必要としないスクリプトにはdashを使用し、インタラクティブに使用するにはbashを使用するのが一般的です(ただし、zshにはより優れた機能がたくさんあります)。

ディスプレイマネージャ(ユーザー名とパスワードを入力するプログラム)とデスクトップ環境のほとんどの組み合わせは、~/.profileを読み取ります。 /etc/X11/Xsessionのログインスクリプトから 、/usr/bin/lightdm-session/etc/gdm/Xsession または該当する方。したがって、環境変数の定義を~/.profileに配置します 。 dashがサポートする構文のみを使用するようにしてください。

では、何をどこに置くべきですか?

  • 良い.bash_profile .profileをロードします 、および.bashrcをロードします シェルがインタラクティブな場合。

    . ~/.profile
    if [[ $- == *i* ]]; then . ~/.bashrc; fi
    
  • .profile内 、環境変数の定義、およびulimitなどの他のセッション設定を配置します 。

  • .bashrc内 、エイリアス、関数、補完、キーバインディング(.inputrcにはない)などのbashインタラクティブ設定を配置します )、…
関連:Debian 9:8からアップグレードした後、MySQL(MariaDB)は機能しなくなりましたか?
Linux
  1. チルダ(〜)が二重引用符の内側に展開されないのはなぜですか?

  2. Bashスクリプトがエイリアスを認識しないのはなぜですか?

  3. シェルスクリプトの「sudoSu」がスクリプトの残りの部分をルートとして実行しないのはなぜですか?

  1. .bashrcの目的とそれはどのように機能しますか?

  2. バッシュ‘?

  3. プロセスが親の環境を継承する場合、なぜエクスポートが必要なのですか?

  1. DebugfsのLsdelが機能しないのはなぜですか?

  2. 実行後にBashスクリプトが終了しないのはなぜですか?

  3. ファイルが存在する場合にforループの`zip`が機能するのに、存在しない場合は機能しないのはなぜですか?