Blow Up by Black Swan

シェルスクリプト!お前を完全に理解した(メ ̄ー ̄) ┏ ・・・・ バキューン! (超基本編)

調子に乗って煽りタイトルをつけてしまいましたが、今までよく理解できていなかったシェルスクリプトについて基本的なことが理解できたので、今回わかった範囲でまとめてみました。今回のお試し用のシェルスクリプト(下記)をホームディレクトリ直下に設置しています。

  • path: ~/test.sh
#!/bin/bash
  
cd $(dirname $0)

mkdir test

最初はシェルスクリプトを明示するものです。その次のスクリプトは少しややこしいですが、次のような順序で判定されていく模様です。

$0  # スクリプトファイル名のこと(ここでは"~/test.sh")
 -> $(dirname $0)  # 引数($0=このスクリプト)のディレクトリを返すもの(ここではホームディレクトリ(~)のこと)
 -> cd $(dirname $0)  # このカレントディレクトリをこのディレクトリに変更するこ

そして、その次は”test”というファイルを作るコマンドです。コード全体としては、”test.sh”が格納されているディレクトリに移動してそこにtestフォルダを作るという簡素なものです。この単純なシェルスクリプトを通して、どのフォルダから実行しても、カレントディレクトリを指定したディレクトリに変更し、そこで指定したコマンドを実行する方法がわかります。また、このスクリプトはカレントディレクトリがどこであろうとも次のコマンドで実行することができます。

~/test.sh

実行後、ターミナルに表示されているディレクトリを確認するとわかりますが、実行時のディレクトリのままになっています。これは、実行時にサブシェルという現在のターミナルの子シェルのようなところで実行されているためです。一方で、サブシェルで実行されていてもtestディレクトリがしっかり作成されていることはわかります。今までシェルスクリプトをほぼ避けてきたのですが、今回このシェルスクリプトの作成に至ることで次のようなことが理解できました。

  • シェルスクリプトの実行方法
  • シェルスクリプト内でのカレントディレクトリの変更方法
  • シェルスクリプトでのディレクトリの指定方法
  • シェルスクリプトが実行される時の基本的な挙動や仕組み

今回の参考サイトは以下になります。

簡単な記事になりますが、どなたかの参考になりましたら幸いです。