2022年2月10日
ざっくり
13時起床。早朝バイトがないとだめですね。しかし、今日はアラームを設定していなかったのでものすごく幸せな気持ちで起きました。たまにはアラームを鳴らさないのもいいです。
生産的活動したかった
新しいLinuxの教科書読みました。内容忘れました。
シェルスクリプトはshではなくbashで書いた方がいいらしいです。互換性や移植性が高いそうです。Linuxのディストリビューションによってはshの実装方法が異なっていることが根拠なんですね。
bashとshの違いが正直全くわからないので、へーそうなんすか、ぐらいの気持ちです。そもそもシェルスクリプトをbashで書くという動作の意味がよくわからないです。vimで書く場合はbashでvimを起動すればいいということなんですかね。何もわからない。
慣習で拡張子をshにするようですがそれもややこしいです。拡張子shでbashで書いたシェルスクリプトという存在です。拡張子なしのテキストファイルでもいいらしいです?
#!で始まるshebang(シバン)。 #!以降の行に書かれているコマンドを実行します。#!/bin/bashならばまずbashを実行します。ああ!これがシェルスクリプトをbashで記述するということなんですね!ここで/bin/shと記述しておけばshでシェルスクリプトを記述することになるんですね!たぶん。#が先頭にある行はシェルは認識しないので、シバンの存在はシェルは知らないです。カレントシェルがzshのとき、先頭に#!/bin/bashが書かれたシェルスクリプトを実行するときは、行きはzshで、カーネルにたどり着いたときにカーネルがbashで実行して返せばいいことを認識して、帰りはbashから帰ってくるということなんでしょうか。
シェルスクリプトにはchmodコマンドで実行権限を付ける必要があります。つけないとPermision deniedでした。-rw-r--r--が作成直後のファイルタイプ、ファイルパーミッションでした。オーナーは書き込み可能なのでオーナーの私が実行権限を付与できるんですね。シンボルモードによる表記でユーザ指定をしなかったら、すべてのユーザに権限付与できました。
./でカレントディレクトリ内の指定したファイルを実行するというおまじないだと思っていましたが単純にファイルのパスを打ち込んでいるだけなんですね。相対パスで表現しているだけなんですね。
~はホームディレクトリだということを忘れていました。
sourceコマンドはシェルスクリプトをそのままコマンドラインに入力して実行する。.コマンドと同じ意味。カレントシェルの環境の影響を受けることに注意が必要です。エイリアスなどがシェルスクリプト内でも有効になっています。ファイル名で実行した場合にはサブシェルと呼ばれる、現在のシェルから新しく起動される子プロセスのシェルで実行されます。
- 新しいLinuxの教科書~p.277