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

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

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

zsh

zshは、UNIX系OSのシェルの1つです。 cshやksn系のコマンドライン編集機能も実装されたシェルです。

Q&A

解決済

1回答

3271閲覧

.zshrc内にexport文が複数ある場合はどのexport文が適用されるのか知りたい(flutter path)

Risney

総合スコア148

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

zsh

zshは、UNIX系OSのシェルの1つです。 cshやksn系のコマンドライン編集機能も実装されたシェルです。

0グッド

0クリップ

投稿2021/09/06 02:34

問題

表題の通りですが、
.zshrc内にexport文が複数ある場合はどのexport文が適用されるのか知りたいです。

どこかの記事だったかに一番下以外のexport文は無視されると記載があり、
自分が検証した結果的にもおそらくその通りだとは思うのですが、
確証となる記事を見つけれらなかったので、
知見ある方からのお墨付きをもらって確証を得てから安心して自分の記事に書こう!
と思い質問させて頂きました。

検証方法

.zshrcファイル内容を色々変えてから、
ターミナルでwhich flutterした際の結果

結果① - 1行の正常パターン -

vim .zshrc

zshrc

1export PATH="/user/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/flutter/bin"

which flutter

Terminal

1/Applications/flutter/bin/flutter

結果②

結果①のexport文の下に、
flutterへのPATHがないexport文を入れてみた

vim .zshrc

zshrc

1export PATH="/user/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/flutter/bin" 2export PATH="/user/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"

which flutter

Terminal

1flutter not found

1行目のみであれば正常なの結果になるので、
やはり最下行が反映されている?

結果③

結果②のexport文の上下を変えてみた

vim .zshrc

zshrc

1export PATH="/user/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" 2export PATH="/user/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/flutter/bin"

which flutter

Terminal

1/Applications/flutter/bin/flutter

正常なexport分が最下行であれば上記の結果になるので、
やはり最下行が反映されている?

試した結果④

vim .zshrc

zshrc

1export PATH="/user/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" 2export PATH="/Applications/flutter/bin"

vim .zshrcコマンド時に以下結果になる

Terminal

1zsh: command not found: vim

which flutter

Terminal

1/Applications/flutter/bin/flutter

試したこと⑤

結果④のexport文の上下を変えてみた

vim .zshrc

zshrc

1export PATH="/Applications/flutter/bin" 2export PATH="/user/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"

which flutter

Terminal

1flutter not found

まとめ

以上の結果からやっぱり最下行しか見てないのかなぁ、、
と自分の中では結論が出ているのですが、
もし誤りがあればご指摘願います。

宜しくお願いいたします。

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

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

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

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

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

jbpb0

2021/09/06 02:51

上から下に順番に全て実行されます 質問の書き方だと常に上書きしてるので、一番下以外の内容は一旦は設定されるけど上書きされて消えてしまうため、結果的には一番下の内容しか反映されません maisumakunさんが回答に書いてるように、「$PATH」を使えば既に設定された内容が引用されるので、一番下以外の内容も残って反映されます
Risney

2021/09/06 05:04

コメントありがとうございます。 やはり自分の判断で記事をかかないでよかったです。 maisumakunさんをベストアンサーにさせて頂きました????‍♂️
guest

回答1

0

ベストアンサー

以上の結果からやっぱり最下行しか見てないのかなぁ、、

と自分の中では結論が出ているのですが、

そう考えるべきではありませんexportは書いた場所ごとに実行されています。あとのexportが先に行ったexportの結果を上書きしているだけです。

なお、あとの方のPATHの設定の中で$PATHを使えば、「すでにある設定に追記する」ことも可能です。

zsh

1export PATH="/user/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" 2export PATH="$PATH:/Applications/flutter/bin"

投稿2021/09/06 02:38

編集2021/09/06 02:46
maisumakun

総合スコア145184

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

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

maisumakun

2021/09/06 02:42

「どれが適用される」という考え方そのものが、妥当ではない印象です。 ふつうのプログラムでも、進むにつれて変数が書き換わっていきますが、環境変数もそれと同じです。
maisumakun

2021/09/06 02:50

.zshrcは「設定ファイル」として扱われることもありますが、決まった項目と値の組み合わせを書くようなものではなく、zshが実行することでシェルに設定を反映させる「シェルスクリプト」です。
Risney

2021/09/06 05:02

細かい回答ありがとうございます! 全て適用されるが、質問に書いたコードだと書いた場所ごとに実行した結果、後の文が上書きしてしまっていたのですね。 また'$PATH'で追記できるのも勉強になりました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問