🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
bash

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

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Linux

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

Q&A

解決済

1回答

491閲覧

envを、付けた時と付けなかった時の違い

TrueOgre2

総合スコア26

bash

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

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Linux

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

0グッド

0クリップ

投稿2019/12/18 07:19

次の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

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/12/18 10:30

考え方は違っていると思います。 前者はbashの機能で、「一時的に」シェル変数兼環境変数を設定してnpmを実行 後者はenvコマンドに環境変数設定用文字列とコマンド名とそのコマンド引数を、引数として渡して、「envコマンド」にnpmを実行してもらう 結果的には同じようにnpmを実行しています(詳しくはman bashやman envで読んでください)。 シェル変数はシェル内部で有効な変数で、環境変数は子プロセスを生成するときに渡す変数です。 bashではシェル変数と環境変数の実体は同じで(シェルに依る)、シェル変数がexportされて環境変数としても使用されます。 正確な回答は他の人がしてくれると思うので、私はこの辺までで。
guest

回答1

0

ベストアンサー

違います。
この場合、両者は同じ働きです。
環境変数でないシェル変数は子プロセスに伝わりません。

前者は、コマンドを実行する際に一時的に環境変数を変更するsh/bash/ksh/zsh/ash/dashの機能です。

後者は、envコマンドが同等の機能を果たしています。
envは、(bashなどの高機能シェルが出来る前によく使われていた)csh/tschといったshと互換性のないシェルが、前者の機能を持っていなかったために、それを代替するために作られたコマンドです。
(現在でもtcshをメインで使っている人は多分いると思いますが)
envは前者の機能に加えて、一時的に環境変数を削除してコマンドを実行することもできます。

投稿2019/12/18 17:19

otn

総合スコア85893

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

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

TrueOgre2

2019/12/21 04:28 編集

回答、どうもありがとうございました。 シェルの違いから生まれた、同じような処理を行うコマンドだったのですね。 勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問