次の2つのコマンドの違いを知りたいです。
コメントに記載した考え方で、合っていますでしょうか?
色々と検索をして、Linuxの変数には、シェル変数と環境変数という2つがあることを知りました。 envを、付けた時と付けなかった時の違いを知りたいと思いました。 以下の考え方で、合っていますでしょうか?
bash
1# シェル変数に登録して、npm startを実行している。 2DEBUG=module:* PORT=8000 npm start 3 4# 環境変数に登録して、npm startを実行している。 5env DEBUG=module:* PORT=8000 npm start
考え方は違っていると思います。
前者はbashの機能で、「一時的に」シェル変数兼環境変数を設定してnpmを実行
後者はenvコマンドに環境変数設定用文字列とコマンド名とそのコマンド引数を、引数として渡して、「envコマンド」にnpmを実行してもらう
結果的には同じようにnpmを実行しています(詳しくはman bashやman envで読んでください)。
シェル変数はシェル内部で有効な変数で、環境変数は子プロセスを生成するときに渡す変数です。
bashではシェル変数と環境変数の実体は同じで(シェルに依る)、シェル変数がexportされて環境変数としても使用されます。
正確な回答は他の人がしてくれると思うので、私はこの辺までで。
回答1件
あなたの回答
tips
プレビュー