ごく基本的なことだが、今までよく考えずに使っていた。 source コマンドというと、「.bash_profile を変更した後に使うもの」ぐらいのイメージしかなかった。 謎 「なぜひと手間かけさせるのか」「プロフィールファイルを変更した時に、環境設定も自動更新してくれたら良いのに」と思っていた。 だが source コマンドは実は、環境をリロードするためのものではない。 ファイルに書かれた内容を 忠実にコマンドとして実行していくものなのだ。 $ source と $ bash の違い では $ bash でファイルを実行するのとは何が違うのか。 $ bash [file] はシェルスクリプト内の 「裏側=閉じられた環境」 でコマンドを実行する。 $ source [file] は 「表側=開いた環境」 で、コマンドを実行する。 動作が変わる例 たとえば「変数に代入するだけ」の単純なスクリ
![Linux — source コマンドは何をしているのか > 実は環境をリロードするためのものではない - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/84689990c1a69731904e260f9a1a0c31b2dc5bab/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9TGludXglMjAlRTIlODAlOTQlMjBzb3VyY2UlMjAlRTMlODIlQjMlRTMlODMlOUUlRTMlODMlQjMlRTMlODMlODklRTMlODElQUYlRTQlQkQlOTUlRTMlODIlOTIlRTMlODElOTclRTMlODElQTYlRTMlODElODQlRTMlODIlOEIlRTMlODElQUUlRTMlODElOEIlMjAlM0UlMjAlRTUlQUUlOUYlRTMlODElQUYlRTclOTIlQjAlRTUlQTIlODMlRTMlODIlOTIlRTMlODMlQUElRTMlODMlQUQlRTMlODMlQkMlRTMlODMlODklRTMlODElOTklRTMlODIlOEIlRTMlODElOUYlRTMlODIlODElRTMlODElQUUlRTMlODIlODIlRTMlODElQUUlRTMlODElQTclRTMlODElQUYlRTMlODElQUElRTMlODElODQmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPTdjMjM0NjU3OTQwMjVhOTgzMTI0MTE4ZjJhZmNmZjkx%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBZdW1hSW5hdXJhJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz05OGNmNzg4MzJiMThmNjg2NWFjYmYxM2RiYTc0N2EwMQ%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3D0307b74ac0625c3b8749bb985f746785)