Shell script current directory?

155,763

Solution 1

The current(initial) directory of shell script is the directory from which you have called the script.

Solution 2

As already mentioned, the location will be where the script was called from. If you wish to have the script reference it's installed location, it's quite simple. Below is a snippet that will print the PWD and the installed directory:

#!/bin/bash
echo "Script executed from: ${PWD}"

BASEDIR=$(dirname $0)
echo "Script location: ${BASEDIR}"

Solution 3

Most answers get you the current path and are context sensitive. In order to run your script from any directory, use the below snippet.

DIR="$( cd "$( dirname "$0" )" && pwd )"

By switching directories in a subshell, we can then call pwd and get the correct path of the script regardless of context.

You can then use $DIR as "$DIR/path/to/file"

Solution 4

You could do this yourself by checking the output from pwd when running it. This will print the directory you are currently in. Not the script.

If your script does not switch directories, it'll print the directory you ran it from.

Solution 5

To print the current working Directory i.e. pwd just type command like:

echo "the PWD is : ${pwd}"
Share:
155,763

Related videos on Youtube

Suzan Cioc
Author by

Suzan Cioc

Not to be offended

Updated on April 13, 2022

Comments

  • Suzan Cioc
    Suzan Cioc about 2 years

    What is current directory of shell script? I this current directory from which I called it? Or this directory where script located?

  • HosseyNJF
    HosseyNJF over 4 years
    Can you explain what's going on? When my script gets run more than 20 times simultaneously, I get the following error: ....sh: fork: retry: Resource temporarily unavailable The script gets run by OpenVPN. (under nogroup group and nobody account)
  • Synchro
    Synchro over 2 years
    This doesn't work for me. It only gives the name of the containing dir, not the full path. For example, if I do that from a script in /home/user/scripts/x.sh, it returns scripts, not /home/user/scripts.
  • mnabil
    mnabil over 2 years
    I think this is because your current working directory is /home/user and you called the script by scripts/x.sh. Hence, $0 value inside the script is scripts/x.sh. In order to get the absolute path of the script, you can use BASEDIR=$(cd $(dirname $0) && pwd)