Bash: Including a path from one file into another

  • Thread starter Thread starter jf22901
  • Start date Start date
  • Tags Tags
    File Path
Click For Summary
The discussion revolves around how to effectively manage directory paths in bash scripts to avoid repetitive manual changes. The user initially proposed creating a separate file, 'path.sh', to define a variable for the directory path and then sourcing it in other scripts. However, the user encountered issues with the syntax and functionality. Suggestions from other participants included using the 'export' command to set environment variables, considering command-line arguments for flexibility, and creating a master script to manage individual script execution. Ultimately, the user found success by changing the syntax from $(FILEPATH) to $FILEPATH, which resolved the issue. The conversation highlights the importance of proper variable referencing and the potential for more efficient script management through environment variables and modular scripting.
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
 
Technology 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.
 
Learn If you want to write code for Python Machine learning, AI Statistics/data analysis Scientific research Web application servers Some microcontrollers JavaScript/Node JS/TypeScript Web sites Web application servers C# Games (Unity) Consumer applications (Windows) Business applications C++ Games (Unreal Engine) Operating systems, device drivers Microcontrollers/embedded systems Consumer applications (Linux) Some more tips: Do not learn C++ (or any other dialect of C) as a...

Similar threads

  • · Replies 2 ·
Replies
2
Views
2K
Replies
1
Views
5K
  • · Replies 16 ·
Replies
16
Views
4K
  • · Replies 19 ·
Replies
19
Views
2K
  • · Replies 9 ·
Replies
9
Views
1K
  • · Replies 21 ·
Replies
21
Views
2K
Replies
4
Views
5K
Replies
9
Views
4K
  • · Replies 12 ·
Replies
12
Views
11K
Replies
35
Views
6K