bashスクリプトの中からパスをエクスポートしてみてください。

bashスクリプトの中からパスをエクスポートしてみてください。

環境設定全体を bash ファイルに入れようとしています。私は1つの問題だけを解決します。ファイル内から新しいパスをエクスポートしようとすると、bashファイルが実行されている環境ではパスが設定されません。私がしたい

>>sudo -H sh test.sh

test.shはどこにありますか?

bunch of installs

export PATH=/home/ubuntu/anaconda3/bin:$PATH

a second bunch of installs

evalの目的だと思って試してみました。

eval `export PATH=/home/ubuntu/anaconda3/bin:$PATH`

そしてさらに

eval `echo "export PATH=/home/ubuntu/anaconda3/bin:$PATH"`

ただし、端末からコマンドにアクセスできません。手動で行うとうまくいきます。

- - - - - - - - -更新- - - - - - -

標準bashの実行はサブシェルで実行されるため、実行後に環境変数が失われます。同じシェルで実行するには:

source test.sh

ただし、実行に対する完全な権限を持つことができる必要があるため、以下を使用する必要があります。Sudo。説明どおりここ君は電話できない首都ゲンしかし、彼らはそれが動作するようにハッキングを提供します

source <(sudo cat /etc/environment)

答え1

Bashを使用する場合の簡単な答えは、エクスポートした変数を既存のプライベート起動(または初期化)ファイルの1つに入れることです。端末を閉じると、端末にエクスポートされた変数が失われます。スクリプトからエクスポートされた変数は、スクリプトが終了すると失われます。

存在する場合と存在しない可能性がある他の起動ファイルがありますが、最も一般的なものは次のとおりです。

  • ~/.bashrc
    • 非ログインシェルに対してbashによって実行された
  • ~/.bash_profile
    • 対話型ログインシェルのためにbashによって実行される
    • ~/.profileはいまだ読んでいないこのファイルが存在する場合
    • ~/.bashrc一部のシステムでもお読みください。
    • ファイルを再度読み取るには(ログアウトと)ログインが必要です。
  • ~/.profile
    • ログインシェルのコマンドソルバーによって実行されます。
    • はいまだ読んでいない~/.bash_profile存在する場合
    • ~/.bashrc一部のシステムでもお読みください。
    • ファイルを再度読み取るには(ログアウトと)ログインが必要です。

または、すべての個人用カスタマイズを含む新しい起動ファイルを作成し、コマンドライン/スクリプトまたは上記の起動ファイルのいずれかを使用して読み込みます(インポートsource /path/to/myenvironment. /path/to/myenvironment

いくつかのサンプル起動ファイルはbash-docUbuntu / Debianパッケージ(使用sudo apt-get install bash-doc)で利用可能で、次の場所にインストールされます。/usr/share/doc/bash/examples/startup-files/

関連情報