要約:

要約:

LaTEXをインストールしたばかりで、$PATHコマンドを使用できるように変数にパスを追加する必要があります。/usr/local/texlive/2015/bin/x86_64-linuxPATHにpath()を追加しようとしましたが、.bash_profile端末を再起動するとecho $PATH追加の内容は表示されません。私が追加した関連コード:

PATH=$PATH:$HOME/.local/bin:$HOME/bin:/usr/local/texlive/2015/bin/x86_64-linux
export PATH

パスを追加しようとしましたが、/etc/profile成功しませんでした。どんなアドバイスも本当にありがとうございます。

答え1

あなたのコードは正しいです。位置が正確であっても正確でない場合もあります。.bash_profileログインシェルがbashでテキストモード(テキストコンソールまたはネットワーク経由)でログインしている場合は、この情報を読みます。ただし、ほとんどのシステムでグラフィカルプロンプトにログインすると、読み込みではなく.bash_profile読み込み.profile中です。重複を避けるために、すべての環境変数の割り当てを入力し、.profile次のコードを使用して.bash_profile対話型ログインシェルと非対話型ログインシェルの両方に対して正しい操作を実行することをお勧めします。

. ~/.profile
case $- in *i*) . ~/.bashrc;; esac

PATHに環境変数定義を入れないでください.bashrc。これは、プログラムが端末から呼び出される場合にのみ機能します。たとえば、エディタがLaTeXを自動的に実行しようとすると機能しません。

.profile(または.bash_profile)はログインした状態でのみ読み取られるため、ログアウトしてから再度ログインするまで設定は適用されません。ターミナルPATH=…にコマンドを入力(または貼り付け)して、ターミナル(そのターミナルから起動したプログラムを含む)に設定を適用できます。一部のデスクトップ環境とウィンドウマネージャでは、環境変数を変更できます。これを行う方法は、デスクトップ環境によって異なります。

答え2

.bash_profileログイン中は読み取り専用で、端末を開くのはログインではありません。.bashrcインタラクティブシェルが読みやすいようにコードに追加する必要があるかもしれません。

この問題に関する詳細な議論は、次のとおりです。この問題

答え3

Gillesの答えは、ログインではなく対話型シェルを考慮しません。


要約:

対話型環境と非対話型環境の両方にPATHを追加する必要がある場合は、次のようないくつかのシナリオを考慮する必要があります。

  1. 非ログインインタラクティブbashシェル

.profileまたは.bash_profileではなく.bashrcのみを読み込みます。

  1. インタラクティブbashシェルにログイン

.profileを読む(.bashrcはデフォルトで.profileから読み込まれます)

または.bash_profile(存在する場合)

  1. 非対話型シェルにログイン

読み取り専用.profile(または.bash_profile(存在する場合))

.bashrcはデフォルトで読み取られず、.profileで.bashrcを検索すると、以下のようにtrueが返されないはずです。

if [-n '$BASH_VERSION'];

  1. 非ログイン非対話型シェル

基本的には何も読みません。


注:私の答えは完全に正確ではないかもしれません。


源泉:

  1. https://askubuntu.com/questions/247738/why-is-etc-profile-not-invoked-for-non-login-shells
    • 完全に正確ではありません。間違った部分は、非対話型シェルが呼び出さないことです。.bashrc
  2. https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html

もっと:

  1. ログイン/非ログインおよび対話型/非対話型シェル

テストログイン非対話型状況

非対話型でログインしたときに.profileがどのように機能するかをテストするには、if elseステートメントの下のファイルにいくつかのエコーを追加します。

~/.profile

if [ -n '$BASH_VERSION'];
then
    echo test > test.txt
else
    echo bash version missing > test.txt
fi

関連情報