Today I have found an interesting issue as I tried to forbid shell script execution from different directory.

Shell script

Solution is self-explanatory and presented below for your convenience.

#!/bin/sh
# simple shell script to demonstrate simple protection system
# as it cannot be executed from different directory
if [ "$(pwd)" != "$(dirname $(readlink -f  $0))" ]; then
  echo "Do not run $(basename $0) script from outside of the $(dirname $(readlink -f  $0)) directory"
  exit
fi
echo "Test passed"

Example

Store the above-mentioned shell script.

$ vi /tmp/test.sh

Execute shell script inside its location.

$ cd /tmp
$ sh test.sh
Test passed

Execute shell script outside of its location.

$ cd
$ sh /tmp/test.sh
Do not run test.sh script from outside of the /tmp directory

As you can see, it is a simple and straightforward solution and also perfect example of the basename, dirname and readlink command usage.