Bash: Including a path from one file into another

  • Thread starter Thread starter jf22901
  • Start date Start date
  • Tags Tags
    File Path
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
4 replies · 3K views
jf22901
Messages
55
Reaction score
1
Hi everyone

I'm having trouble working out how to import a specified path into a bash script. Basically, I have numerous scripts, each of which writes their output to a certain directory via the command

Code:
set wdir = "/home/..."

However, in the future this directory may change, so rather than having to manually change the path of the directories in each file, I was wanting to create one file that specifies the path, and then have the other files include it. That way I only have to change one file if the path changes.

Initially I thought of having the path specified in a file such as 'path.sh', which would simply look like

Code:
FILEPATH="/home/..."

and then I thought that in the other files that require the path I could just put

Code:
#!/bin/bash
.
.
.
source path.sh
set wdir = $(FILEPATH)
.
.
.

However, such coding does not work, and I have no idea how to go about fixing it. Could anyone offer any suggestions as to the best way to include a path specified in another file? I'm new to all this bash scripting stuff! :-p

Many thanks
 
Physics news on Phys.org
try: export FILEPATH="/home/..."

I think the simple set command is only effective for the actual script runtime. I'd have to fiddle with it to prove it, especially when source-ing the file though.
 
Have you considered the option of making the path an argument?

How about using an environment variable?

How about a master script that knows the path, and you select which individual script you want to run as an argument to the master one?



If you are set on this approach, you can use "export" as schip mentioned. Alternatively, you could write a script that writes the filename to stdout and use something like

wdir = `path.sh`
 
Thanks for the replies everyone :cool:

I tried putting 'export' into the file, but it still wouldn't work. However, if I leave everything as it is but change $(FILEPATH) to $FILEPATH, it works. I'll stick with this for now, but will look into the other methods suggested.

Thanks once again
 
Use
FILEPATH=$0
Thats all you need.