まくまくLinux/Shellノート
実行中のシェルスクリプトがあるディレクトリに移動する
2016-08-12

シェルスクリプト内の処理が、シェルスクリプト自体が置いてあるディレクトリをカレントディレクトリとすることを前提として記述されていると、他のディレクトリにいるときにそのスクリプトを実行することができなくなってしまいます。 そのような場合は、スクリプトの先頭で、そのスクリプトがあるディレクトリに移動するようにしておくと、どのディレクトリからでも実行できるスクリプトにすることができます。

下記は、dirname コマンドを利用してカレントディレクトリを移動する例です。

sample.sh

#!/bin/bash

cd `dirname $0`  # スクリプトのあるディレクトリへ移動

# あとは好きな処理を記述していく
chmod -R +r build/

シェルスクリプトは通常新しく起動したシェル内で実行されるため、このスクリプトを起動したシェルのカレントディレクトリが移動してしまうことはありません(source コマンドで起動した場合は例外)。

2016-08-12