質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

Q&A

解決済

3回答

671閲覧

シェル変数や環境変数を記述しているファイルの場所を知りたい

RN082491X

総合スコア17

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

0グッド

1クリップ

投稿2020/10/12 08:48

編集2020/10/14 02:45

#知りたいこと
シェル変数や環境変数が記述されているファイルの場所が知りたいです。
それぞれsetやexport コマンドによって内容を確認することはできますが、どこのファイルにそれらの記述があるのかがわかりません。

#やってみたこと
「環境変数 場所」などで調べてみましたが、確認と変更方法についてしか得られませんでした。
finderの検索機能で、たしか中身まである程度検索できていたかと思っていたので、コマンドで確認した中身の一部を検索したのですが、引っかかってきませんでした。

#環境
Mac(macOS Catalina 10.15.7)
それ以外記述するべき環境があればご教示ください。

#追記
質問をした時点で環境変数について勘違いをしていました。
シェルがコマンドを受け取った時に参照されるファイルのうちの一つに、環境変数がまとめて記述されているファイルがあるという認識でした。PC上の特定の場所に、シェルとは別れて置かれていて、コマンドが実行されるときに、取りに行くものだと考えていました。
回答を読み、「環境変数はシェルの一部として、シェルが起動したときにメモリの上にセットされるようなもの」だと認識を改めたのですが、合っていますでしょうか。
だとすると、シェルを切り替えると環境変数も変わるのでしょうか。windowsだとGUI側から環境変数を確認や変更をすることができますが、シェルを切り替えるとあそこの表示も変わるのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2020/10/13 08:25

パッと読むと「今実行中のシェルにセットされている環境変数が、起動時に読まれるファイル群のどのファイルでセットされているものか知りたい」という質問かと思ってしまうのですが(お二方はそう回答されています)、すでに付いたコメントを読んで質問をもう一度読むとそうではないかもしれない、とも感じます。 なにか書き足した方がいいのではと思いました。(上記の意図でないのであればそのように明に書くなど)
RN082491X

2020/10/14 02:44 編集

ありがとうございます。 質問をした時点で環境変数について勘違いをしていました。 シェルがコマンドを受け取った時に参照されるファイルのうちの一つに、環境変数がまとめて記述されているファイルがあるという認識でした。PC上の特定の場所に、シェルとは別れて置かれていて、コマンドが実行されるときに、取りに行くものだと考えていました。 回答を読み、「環境変数はシェルの一部として、シェルが起動したときにメモリの上にセットされるようなもの」だと認識を改めたのですが、合っていますでしょうか。 だとすると、シェルを切り替えると環境変数も変わるのでしょうか。windowsだとGUI側から環境変数を確認や変更をすることができますが、シェルを切り替えるとあそこの表示も変わるのでしょうか。
quickquip

2020/10/14 02:42

この欄ではなくて、編集して質問に書きましょう。
RN082491X

2020/10/14 02:46

ご助言ありがとうございます。質問を編集しました。
guest

回答3

0

ベストアンサー

MacOS Catalinaのデフォルトシェルはzshなので、以下の環境設定ファイルを番号順に実行します。
/etc配下の設定ファイルはほとんど触る必要はありません。
あなたのホーム(~/)配下のドットファイルを編集してください。
PATHなどの環境変数は④.zprofile、シェル変数は⑥.zshrcに書くのがわかりやすくてお勧めです。
それぞれのファイルにどんな処理が書かれているか、一度くらいは眺めてみてください。

設定ファイルログイン/ログアウトインタラクティブノンインタラクティブ
①/etc/zshenv②~/.zshenv
③/etc/zprofile④~/.zprofile
⑤/etc/zshrc⑥~/.zshrc
⑦/etc/zlogin⑧~/.zlogin
⑩/etc/zlogout⑨~/.zlogout

(補足)
⑤/etc/zshrcの中では、/etc/zshrc_Apple_Terminalを読み込んでいます。

投稿2020/10/12 11:45

technocore

総合スコア7337

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

シェルの初期化ファイルの事だとすると、シェルによって違います。下記を参照。
Unixシェル - Wikipedia

その他、いろいろなシェルスクリプトでもセットされます。

このほかに、Linuxだと/etc/environmentというファイルもあり、PAMというユーザー認証の仕組みの中で読まれて環境変数がセットされます。MacOSに同様の物があるかどうかは知りません。

投稿2020/10/12 10:57

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RN082491X

2020/10/12 11:41

ご回答ありがとうございます。 二つ聞きたいことあります。 ファイルとして保存されているわけではないという回答もあったのですが、これは間違っているのでしょうか、それとも解釈の違いによるものですか。 パソコン上で使われるデータというのは全てどこかしらにファイルという形で存在するものだと認識しているのですが、合っていますか。だとすると、上記の回答は、どこかしらのファイルには存在するがMacの場合それがどこかはわからないという解釈で良いでしょうか。それとも、もしかしたらファイルという形は取っておらず、もっと低いレイヤーに記述されているかもしれないという意味でしょうか。 お手数ですが、ご教示いただければ幸いです。
otn

2020/10/12 12:00 編集

環境変数やシェル変数自体は個々のプロセスのメモリ上に存在します。プロセスが終了すれば消えます。 (シェル変数はシェル独自の機能ですが) メモリ上の環境変数やシェル変数を設定するのは、シェル組み込みコマンドまたはそのプロセスのプログラムです。 例えば/etc/profileに export AAA=XYZ と書いてあれば、ユーザーのログイン時にログインシェルのプロセスのメモリ内の環境変数のエリアにAAAが値XYZであるという情報が書き込まれます。ログアウトすればメモリごと消えます。 そのシェルが起動したプロセスの環境変数の初期値はシェルプロセスの環境変数のコピーです。 > パソコン上で使われるデータというのは全てどこかしらにファイルという形で存在するものだと認識しているのですが、合っていますか。 ファイルかも知れないし、DBかもしれないし、ネットワークから取り込むかも知れないし、キーボードから入力するかも知れない。
guest

0

環境変数はカーネルの内部的に保持してるもんなんで、ファイルにはなってません。

投稿2020/10/12 10:49

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問