![~/.bashrcで定義されている環境変数の範囲は何ですか? [コピー]](https://linux33.com/image/110711/~%2F.bashrc%E3%81%A7%E5%AE%9A%E7%BE%A9%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0%E3%81%AE%E7%AF%84%E5%9B%B2%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
シェルで定義された環境変数をシェルの子プロセスで使用できることを検討してください。
端末を開くと、.bashrcを読み、対応するコマンドを実行します。これは、.bashrcがすべての端末で利用可能であることを意味します。
bashrcの環境変数が定期的に実行されるスクリプトに適用されるかどうか疑問に思います。つまり、これらのスクリプトを実行するために端末を手動で開くことはありません。
デスクトップアイコンをクリックしてQtCreatorを起動するとどうなりますか? QtCreatorプロセスでbashrc環境変数を使用できますか?なぜ?
それ以外の場合は、物理的に端末を開かないスクリプトに環境変数を提供する方法は?
回答時に参考文献を一緒に記載してください。
答え1
これにはあまり標準化されていないコンポーネントがいくつかあります。
通常、デスクトップ環境は、.profile
その子プロセスが定義されているすべての変数を継承するようにユーザーの環境を読み取ります。
通常、デスクトップ環境はまったく読みません.bashrc
。たとえば、macOSはすべての新しい端末をログインシェルとして実行するため、Bashがログインシェルの場合、この時点でログインファイルを読み込みます。
「タイマーで実行」が何を意味するのかは不明です。cron
または で何かを実行すると、インタラクティブな起動at
ファイルは読み込まれません(bash -i scriptname
強制したい場合は、このようなことはできますが)。
Bashに関する限り、.bashrc
権威ある参照は次のとおりです。バッシュ文書。
システム全体の変数を定義する移植可能な場所は、/etc/profile
いくつかのプラットフォームも同様です/etc/environment
。$HOME/.profile