no title

1: 名無しのがるび 2020/09/13(日) 18:55:24.478 ID:RH8yv1ya0.net
環境変数ってなに?





2: 名無しのがるび 2020/09/13(日) 18:56:06.741
パスをきる場所



5: 名無しのがるび 2020/09/13(日) 18:59:35.122 ID:RH8yv1ya0.net
>>2
もっとわかりやすく



3: 名無しのがるび 2020/09/13(日) 18:56:13.307
Environment Variable



7: 名無しのがるび 2020/09/13(日) 18:59:41.756 ID:RH8yv1ya0.net
>>3
どういうことだよ



4: 名無しのがるび 2020/09/13(日) 18:56:47.706
環境に変化をもたらす度合いを数値化したもの



8: 名無しのがるび 2020/09/13(日) 18:59:51.045 ID:RH8yv1ya0.net
>>4
わけわからん



6: 名無しのがるび 2020/09/13(日) 18:59:39.507
環境の変数だよ



9: 名無しのがるび 2020/09/13(日) 19:00:02.733 ID:RH8yv1ya0.net
>>6
????詳しく頼むよ



11: 名無しのがるび 2020/09/13(日) 19:13:49.359
>>9
例えば、生まれた環境、つまり家庭が裕福かとか国とか愛情が足りてるかとかでどんな人間になるかはだいたい決まるじゃん?
それと同時に生まれつき才能というか、器質的な優勢さもあるけど、それはその後の努力とかで覆せるものであって、環境変数とは全然関係ないんだよね。



10: 名無しのがるび 2020/09/13(日) 19:07:14.629
OSまたはユーザーレベルで使える変数



14: 名無しのがるび 2020/09/13(日) 19:32:16.615 ID:RH8yv1ya0.net
>>10
わけわからねえ



12: 名無しのがるび 2020/09/13(日) 19:22:41.516
>>1プログラムってわかるか? アプリとか、あーいうの。
最近だとダブルクリックとか、或いはスタートメニューから選んで実行するアレ。

プログラムを実行する時、例えば表示する位置を特定の位置にしたいとか、
言語を英語表示にしたいとか英語にしたいとか、色々と設定したいことがある。
そういう設定をする仕組みの一つに、環境変数というのがある。
ぶっちゃけ設定ファイルの一種だと思っていても今後の人生で困ることは無い。

本来なら設定ファイルで充分なんだが、環境変数は設定ファイルよりも自由度が
高いしちょっと使うには色々と楽なので、未だに残っている。
似たような用途で『コマンドライン引数』ってのもあるが、コマンドライン引数は
起動する毎に与えなきゃならないので、設定ファイルとはちょっと違う。



13: 名無しのがるび 2020/09/13(日) 19:32:08.908 ID:RH8yv1ya0.net
>>12
例えばハローワールドを表示させるだけのcでかいたプログラムにはどんな環境変数があるの?



23: 名無しのがるび 2020/09/13(日) 20:03:04.850
>>13そのハローワールドで環境変数を見て何かしていれば、それがそう。
でも多分、ハローワールドでは環境変数を見ていない。



24: 名無しのがるび 2020/09/13(日) 20:04:40.987 ID:RH8yv1ya0.net
>>23
見ていない??そんなことあんの??
環境変数はどんなプログラムにも設定してあるんじゃないの?



25: 名無しのがるび 2020/09/13(日) 20:08:28.726
>>24普通はプログラムを起動したプログラムが設定するけど、
それをどう利用するかは受け取ったプログラムの自由。
大体常識的にこれはこう使うってのがあるんだけど、無視することも違う目的で
使うことも受け取ったプログラムの自由。



27: 名無しのがるび 2020/09/13(日) 20:12:45.414 ID:RH8yv1ya0.net
>>25
環境変数は実行してるプログラムのなかのスタックにあるってことでいい?
例えば俺がcで何かしらコードを書いてシグウィンでコンパイル(広義)してコードを実行したら
それはどこが環境変数を定義してるの?



33: 名無しのがるび 2020/09/13(日) 20:25:24.142
>>27 厳密には違うが、大体その認識で困らない。
起動する前にスタックに積んでおいてくれく感じ。



16: 名無しのがるび 2020/09/13(日) 19:43:23.170
確かに直訳で分かりにくいよな。
プログラムが動く仕組みとかも絡むんで説明がめんどくさい。

Windowsならコマンドプロンプト開いてSETって打ち込んでEnter押して表示されるのが環境変数だ。
こいつらはプログラムから参照したり設定したりすることが出来る。



18: 名無しのがるび 2020/09/13(日) 19:57:20.741 ID:RH8yv1ya0.net
>>16
なんのために参照するの?例えば
ハローワールドをguiで表示するのに何を参照してる?



19: 名無しのがるび 2020/09/13(日) 19:59:35.248
パチョコンの場所とかプログラムやライブラリの場所もあるよ



21: 名無しのがるび 2020/09/13(日) 20:01:03.058 ID:RH8yv1ya0.net
>>19
なるほど
ハローワールドでいえば
プリント関数のヘッターファイル?かdllファイルがあんの?



20: 名無しのがるび 2020/09/13(日) 20:01:01.361
プログラムの動作に必要な情報をあらかじめ格納しておく変数
PCの環境によって変わる情報を



22: 名無しのがるび 2020/09/13(日) 20:01:42.720 ID:RH8yv1ya0.net
>>20
プリント関数でいえば?



26: 名無しのがるび 2020/09/13(日) 20:09:31.283
ロケール設定なんかもあるんやない?(´・ω・`)



28: 名無しのがるび 2020/09/13(日) 20:14:15.869 ID:RH8yv1ya0.net
>>26
へー言語とかを決めてる設定ファイルがある場所って感じ?



29: 名無しのがるび 2020/09/13(日) 20:17:24.480
>>28
ファイルシステム の場合ファイルに様々な設定が書かれてるんやない?(´・ω・`)
だから 読み取った後の 環境変数もあるんやない?(´・ω・`)



30: 名無しのがるび 2020/09/13(日) 20:19:09.705 ID:RH8yv1ya0.net
>>29
なんでそれが変数なの?
ごめん



33: 名無しのがるび 2020/09/13(日) 20:25:24.142
>>30 プログラムが変わるんじゃなくて、値だけが変わるから変数。



34: 名無しのがるび 2020/09/13(日) 20:25:27.409
>>30
そもそも変数にデータ格納する利点って データを利用しやすいからやないの?(´・ω・`)

設定ファイルをその都度読み込んでたら HDDの速度ネックで呼ぶ出すたびに速度遅延が大きくなる(´・ω・`)n



33: 名無しのがるび 2020/09/13(日) 20:25:24.142
>>28 日本だと年月日の順、ダメリカだと月日年の順、とかが決まっていて、
その中のどれを使うか、とかを環境変数で渡すことが出来る。他にも小数点が
ピリオドじゃなくてコンマの国とかもある。
これは日付や小数点を文字列へ変換するライブラリーが参照する。ハローワールドでは
日付とかを使っていないので、この環境変数を参照していない。



31: 名無しのがるび 2020/09/13(日) 20:20:33.992
あと変数についてしらべるなら スコープ とかでもぐぐってみたら?(´・ω・`)



32: 名無しのがるび 2020/09/13(日) 20:24:37.000 ID:RH8yv1ya0.net
Wikipedia読まず嫌いしてたけどめっちゃ詳しくかいてあった



36: 名無しのがるび 2020/09/13(日) 20:28:40.218
OSもプログラムで動いてる(´・ω・`)

OSにタスク機能の実装とかして あと共通データなんかはアドレス決めてOSから読み出して利用しやすいようにしておけば

OSの実行速度が上がる(´・ω・`)



41: 名無しのがるび 2020/09/13(日) 20:39:00.405
OSもプログラムで動いてる そして 変数もたくさんあつかってる(´・ω・`)

すべてのアクセスをソフトに認めるとソフト側が勝手に書き換えて安全動作できなくなるから

OSが変数へのアクセスできる範囲なんかも決めてる(´・ω・`)n



43: 名無しのがるび 2020/09/13(日) 20:42:33.172
セキュリティ上の対策で パーミッション なんていう権限をもったOSもある(´・ω・`)



46: 名無しのがるび 2020/09/13(日) 20:49:32.091 ID:RH8yv1ya0.net
レスやらWikiやら見てまとめると
プログラムは(既存のものや新規の)環境変数を持っている
環境変数には使用する言語やらが格納されている
ってことでいい?



47: 名無しのがるび 2020/09/13(日) 20:51:18.796
>>46
OSの実装形態って覚えておけばええ(´・ω・`)



48: 名無しのがるび 2020/09/13(日) 20:54:31.388 ID:RH8yv1ya0.net
>>47
それはosが出力をどう解釈するかって話?



49: 名無しのがるび 2020/09/13(日) 20:56:04.399
>>48
その変数はOSが仕切ってるって覚えておけばええんやないか?(´・ω・`)



51: 名無しのがるび 2020/09/13(日) 20:59:34.756
>>46大雑把にはそれで良い。喪舞自身がプログラムを作る場合や、
喪舞がコマンドラインからプログラムを使うのでなければ、
それ以上のことを知らなくても困りはしない。
そして、必要になってから改めて学んでも少しも困らない。



53: 名無しのがるび 2020/09/13(日) 21:02:47.400 ID:RH8yv1ya0.net
>>51
困らないのは分かるけど
きっちりその辺説明できないと教授から愛の鞭くらう



54: 名無しのがるび 2020/09/13(日) 21:04:54.451
>>53
エミュレータ 使ってOS組んでみたら?(´・ω・`)



55: 名無しのがるび 2020/09/13(日) 21:06:19.472 ID:RH8yv1ya0.net
>>54
osをくむ???



56: 名無しのがるび 2020/09/13(日) 21:12:02.115
>>53 教科書読み直せよwwww
講義で出て来たのか・・・だとすると >>46 は、
>プログラムは(既存のものや新規の)環境変数を持っている
<プログラムは起動する時にOSから環境変数を渡される
かな。環境変数は(OSによって異なるが)大抵は、
LANG=ja_JP
と言う感じで変数名と内容(文字列)とがイコールでつながった形の文字列が、
配列の形で複数渡される。そのプログラムを起動する時に、起動する側が
「この環境変数を渡してね」と指定する。或いは「自分に渡されたのと同じのを
そのまま渡してね」とか「何も指定しないのでデフォルトを渡してね」とかもある。



57: 名無しのがるび 2020/09/13(日) 21:14:02.019
途中送信しちまった。>>56の続き。
プログラムを起動する側が指定した環境変数を使って、OSが実際にプログラムを
起動することになる。



58: 名無しのがるび 2020/09/13(日) 21:18:13.705 ID:RH8yv1ya0.net
>>57
ありがとう…
ちなみに講義も教科書もないけど知ってて当たり前みたいなかんじ



60: 名無しのがるび 2020/09/13(日) 21:25:28.266
>>58情報学科か何か?
もしかしてプログラムやれって言われてハローワールドやらされたところ?
だとしたら、ハローワールドの main(int argc, char *argv[], char *env[]) の
最後の env ってのに環境変数が入っているんだが・・・



61: 名無しのがるび 2020/09/13(日) 21:28:34.192 ID:RH8yv1ya0.net
>>60
詳しくはいえんけど情報系!



63: 名無しのがるび 2020/09/13(日) 21:38:02.139
>>61コンパイルには cygwin を使っているらしいが、ハローワールド以外にも
プログラムは組めるのか? 具体的には if とか while とかが使えるかとか、配列が
わかるかとかを訊いているんだが・・・

cygwin で言うと、Windows が cygwin のシェルを起動する時に環境変数を渡す。
cygwin のシェルがハローワールドを起動する時に、cygwin のシェルが Windows に
この環境変数を渡せって指示する。Windows はそれを受け取って、ハローワールドを
起動する時に渡す。ハローワールドは環境変数を見ていない。
希望するなら、ハローワールドの代わりに環境変数を全部表示するプログラムを作れば、
色々と試せると思うぞ。



64: 名無しのがるび 2020/09/13(日) 21:43:50.480 ID:RH8yv1ya0.net
>>63
一応分かる
わかりやすいありがとう



65: 名無しのがるび 2020/09/13(日) 21:45:45.641 ID:RH8yv1ya0.net
先生みたいだ



67: 名無しのがるび 2020/09/13(日) 21:56:29.206
>>64なら、>>60で書いたように env が環境変数の配列だ。最後には NULL が
入っているから、NULL になるまで while で回せば、printf で表示出来る。
OSの種類(Windows_NT)とかユーザー名とかも入っているから、想像以上に
沢山あると思う。
例えばOSの種類が重要になるプログラムだと、これで種類を調べて動作を変えたり
出来る。



68: 名無しのがるび 2020/09/13(日) 21:59:13.097 ID:RH8yv1ya0.net
>>67
ありがとうございます
めちゃくちゃ勉強がはかどります



引用元:http://viper.2ch.sc/test/read.cgi/news4vip/1599990924/


今一番注目されている記事(・ω<)