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

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

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

fish(friendly interactive shell)は、Unix系OSのシェルの一つです。無設定で多くの機能を利用することが可能。カラフルな表示で見やすく、TAB補完にも優れています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

Q&A

2回答

3512閲覧

「.bash_profile」「.bashrc」に記載されていないパスがコマンドとして利用できる理由

study_111

総合スコア82

fish

fish(friendly interactive shell)は、Unix系OSのシェルの一つです。無設定で多くの機能を利用することが可能。カラフルな表示で見やすく、TAB補完にも優れています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

0グッド

0クリップ

投稿2020/05/04 11:10

編集2020/05/04 11:12

環境変数,PATHについて調べていたのですが、あやふやだった点をハッキリさせたいと思い質問させて貰いました。

自分のターミナル(fish)でecho $PATHと打ち込むと、以下のように表示されます。

/usr/local/bin/ /usr/local/bin /usr/bin /bin /usr/sbin /sbin /opt/X11/bin

ここのフォルダ内に存在する実行ファイルは基本的に、ターミナルからファイル名の指定でコマンドが実行できますが、例えば「/usr/local/bin/」ここのパスを「.bash_profile」や「.bashrc」に登録をすることで、「/usr/local/bin/」ここのフォルダ内のファイルがコマンドとして使えるようになるのだと思います。

しかし、自分の「.bash_profile」や「.bashrc」には、/usr/local/bin/ここのパスが記載されていませんでした。

「.bash_profile」の内容は下記になります。

export WORKON_HOME=$HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/Users/tt-a/.pyenv/shims/python3 export PROJECT_HOME=$HOME/Devel export PATH="$HOME/.pyenv/shims:$PATH" export PATH="$PATH:/usr/local/bin/docker-machine" export PATH="$HOME/.composer/vendor/bin:$PATH" source $PYENV_ROOT/versions/3.7.3/bin/virtualenvwrapper.sh export PATH="$HOME/.nodebrew/current/bin:$PATH" # added by Anaconda3 2019.10 installer # >>> conda init >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="(CONDA_REPORT_ERRORS=false '/Users/tt-a/opt/anaconda3/bin/conda' shell.bash hook 2> /dev/null)" if [ $status -eq 0 ]; \eval "$__conda_setup" else if [ -f "/Users/tt-a/opt/anaconda3/etc/profile.d/conda.sh" ]; . "/Users/tt-a/opt/anaconda3/etc/profile.d/conda.sh" CONDA_CHANGEPS1=false conda activate base else \export PATH="/Users/tt-a/opt/anaconda3/bin:$PATH" end end unset __conda_setup # <<< conda init <<<

さらに、「.bashrc」の中身も開きましたが、空となっていました。

疑問点なのですが、何故「/usr/local/bin/ 」のフォルダなどが存在していないにも関わらず、コマンドとして「/usr/local/bin/ 」内のファイルが指定できるのでしょうか...?

※環境について
MacOS 10.14.6
ターミナル: fish

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

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

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

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

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

guest

回答2

0

まず、使用しているシェルが fish ですので、.bash_profile、.bashrc は使われていません。

https://fishshell.com/docs/current/index.html?highlight=profile#initialization-files によると、(詳細は上記リンクを参照していただくとして、)以下の順で設定ファイルを読み込みます。

  1. /usr/share/fish/config.fish
  2. ~/.config/fish/conf.d/*.fish
  3. /etc/fish/conf.d/*.fish
  4. XDG_DATA_DIRS環境変数で指定したディレクトリ + fish/vendor_conf.d/*.fish
  5. /etc/fish/config.fish
  6. ~/.config/fish/config.fish

これらの、既定の初期化スクリプトの中で、PATH環境変数についても設定が行われていると考えられます。

投稿2020/05/04 11:23

kazto

総合スコア7196

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

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

study_111

2020/05/04 13:41

ご回答ありがとうございます。 1~5のファイルを調べてみたのですが、ほとんどパスの情報は記載がされていませんでした。具体的には以下のファイルとなります。 「/usr/share/fish/config.fish」「~/.config/fish/conf.d」「/etc/fish/conf.d/」「/etc/fish/config.fish」「~/.config/fish/config.fish」 一行程度自分で以前に追加したパスが「~/.config/fish/config.fish」に設定されていたのですが、それ以外は何も記載されておりませんでした。
kazto

2020/05/05 06:59

いえ、今回初めてちゃんと読みましたが、`/usr/share/fish/config.fish` で各種PATHをセットしていますね。
study_111

2020/05/05 09:18

何故わからないのですが、「/usr/share/fish/config.fish」こちら開いても何も記載されていませんでした...
kazto

2020/05/05 09:38

fishのインストールはどのように行いましたか? Macであれば、Homebrew経由でしょうか。であれば、/usr/local/share/fish/ 以下あたりにあったりしませんでしょうか。
study_111

2020/05/05 10:07

結構前なのであまり覚えておらず申し訳ないのですが、恐らくHomebrewでインストールしたと思います... 「/usr/local/share/fish/」こちら見てみましたら、「config.fish」が存在しており、設定項目と思われる内容が記述されておりました。 しかし、こちらには、「set PATH /usr/local/bin /usr/sbin $PATH」のような項目は存在していなかったのですが、angel_p_57さんがおっしゃります通り、これらのパスはターミナルの元々の設定でパスが指定されていた可能性がございますでしょうか?
kazto

2020/05/05 10:16

そうですね、fishを起動するまえにbashにいたのであれば、PATHが引き継がれていると考えられます。 fishをログインシェルに変更しているのであれば、その限りではありません。
study_111

2020/05/05 10:48

なるほどです。長々とありがとうございました。 後は自分で色々と、調べてみたいと思います。 大変勉強になりました。 
guest

0

シェルの設定ファイルの影響というのもありますが、PATH も環境変数の1種であり、環境変数は親プロセスから子プロセスへ引き継ぐ使い方をするものですので、シェルの起動元 ( この場合はターミナル ) が、もともと PATH を何に設定しているか。その影響を見る必要があると思います。
※で、そのターミナルの持つ環境変数は、例えばGUIのランチャーから…とか。辿るとキリがないところですが。

投稿2020/05/04 11:50

angel_p_57

総合スコア1681

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

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

study_111

2020/05/04 13:36

ご回答ありがとうございます。 ということは、fishではない起動元のターミナルの設定で、「/usr/local/bin」を、環境変数に指定してしている可能性があるということでしょうか?
angel_p_57

2020/05/04 14:28

はい。その可能性があります。もっと言うと、ターミナルは関与してなくて、もっとおおもと ( GUIコンポーネントを統括するプログラム ) が由来になっているかも知れません。 「突き止めたい」ということであれば、どこが由来になっているか切り分けていく必要があります。 ※申し訳ないのですが、ターミナルの設定含め、どうすれば調べていけるかまでの知識は私にはないです…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問