I have a script doSmth
in /usr/bin
. Is it possible to get and print the directory the script was called from?
So if I call doSmth
from /home/me
the output will be /home/me
.
I have a script doSmth
in /usr/bin
. Is it possible to get and print the directory the script was called from?
So if I call doSmth
from /home/me
the output will be /home/me
.
When you invoke a command in the shell, the new process inherits the working directory of the parent. Here are two ways get the working directory:
echo "$PWD" # variable
pwd # builtin command
By "directory it was called from" you seem to mean its working directory. You can change this inside the script using e.g., cd
, but before you do so, pwd
will print it out. It'll also likely be in the variable $PWD
If you'll need the initial working directory after changing it, just save it at the top of your script (before changing it)
#!/bin/bash
initial_wd=`pwd`
# ... do a lot of stuff ...
# ⋮
cd "$initial_wd"
If you're using this to get back to the directory you started in, see also pushd
and popd
.
cd
twice)
– derobert
Oct 25 '12 at 20:50