シェルスクリプト内の処理が、シェルスクリプト自体が置いてあるディレクトリをカレントディレクトリとすることを前提として記述されていると、他のディレクトリにいるときにそのスクリプトを実行することができなくなってしまいます。 そのような場合は、スクリプトの先頭で、そのスクリプトがあるディレクトリに移動するようにしておくと、どのディレクトリからでも実行できるスクリプトにすることができます。
下記は、dirname
コマンドを利用してカレントディレクトリを移動する例です。
#!/bin/bash
cd `dirname $0` # スクリプトのあるディレクトリへ移動
# あとは好きな処理を記述していく
chmod -R +r build/
シェルスクリプトは通常新しく起動したシェル内で実行されるため、このスクリプトを起動したシェルのカレントディレクトリが移動してしまうことはありません(source
コマンドで起動した場合は例外)。