なんとなく把握したつもり。
スコープ
変数のスコープは以下の3階層ある。
- マシン
- プロセス
- 関数
- プロセス
メモリ空間
異なるマシンは異なる物理メモリを持っている。共有するにはネットワーク接続せねばならない?
┌マシンA───┐ │環境変数A=0│ └───────┘ ┌マシンB───┐ │環境変数A=1│ └───────┘
同一マシンは異なるプロセスを持てる。共有するには環境変数にせねばならない。export
かdeclare -x
で宣言する。
┌マシンA───┐ │環境変数A=0│ │┌プロセスA┐│ ││変数A=1││ │└─────┘│ │┌プロセスB┐│ ││変数A=2││ │└─────┘│ └───────┘
変数はプロセス内ならどこでも共有できる。異なる関数内であっても。逆にスコープを関数内のみにするにはlocal
かdeclare
で宣言せねばならない。
┌プロセスA──┐ │変数A=1 │ │┌関数あ──┐│ ││変数A=あ││ │└─────┘│ │┌関数い──┐│ ││変数A=い││ │└─────┘│ └───────┘
スコープが異なる同名の変数を参照しようとしたときは、スコープが狭いものが参照される。
┌マシンA─────┐ │環境変数A=0 │ │┌プロセスA──┐│ ││変数A=1 ││ ││┌関数あ──┐││ ││|変数A=あ│││ ││└─────┘││ │└───────┘│ └─────────┘
所感
フォントが等幅にならず崩れる…….。VLゴシック指定したらアルファベットすら崩れた。どうすればいいの?