I am running an SQL-Script over KShell-Script. Thus, in the KShell-Script there are these lines:
In my SQL-Script it exists an export command:
As we can see, I have defined some variables, but uncompletely, such as WORKPATH is still unfilled. It is because, that the KShell-Script should be run in ANOTHER Unix-System. Now, the SQL-Script creates for a csv-table to the directory, which where the SQL-Script last being called. But the SQL-Script should create the csv-table in the variable EXPORTPATH.
So, thats why I was thinking, "okay, then I will just do a cd ${EXPORTPATH} bevor calling the SQL-Script:
My teacher, who is a UNIX-Guru, said, this is not good. He gave me the reason for it but I could not understand. I try to explain the reason:
"if you do a cd there, it would be NOT RELATIVE PATH SAFE, it must be relative path safe. You are possibly killing all the relative paths, which come from outside."
It is difficult for me to express my question correctly becaus I actually dont even understand what the basic problem here. Does somebody have a clue? He is a UNIX-Guru, so it must be something true in his explanations.
As I said, the KShell-Script should be run in the machine, which I dont know the config-files and environment variables.
I suspect he is referring to $PWD which is the basis for your paths. So all your paths will be relative to $PWD, which is the path the caller of the script happens to be in when he calls the script. So indeed that location would be determined outside the script.
So you would either need to use a cd-command before that statement or use an absolute path instead. Or, if you need to use paths relative to the location of your script, you could perhaps use information from $0 as the basis...
$PWD returns an absolute path, but it is the path to the current directory. If you do not change the current directory in your script first, then this is the current directory of the person who is running the script, so ${EXPORTPATH} becomes relative to his current directory...
I suspect your guru is wrong here.
There is a Unix principle that each process gets a copy of its parent process' environment.
So it cannot have an impact on another process but its own child processes.
For shell script safety have variables in quotes when used in command arguments:
Hello,
I am creating a file with all the source folders included in my git branch, when i grep for the used source, i found source included as relative path instead of absolute path, how can convert relative path to absolute path without changing directory to that folder and using readlink -f ? ... (4 Replies)
I have a lab I am doing for a Linux Operating class. The question I am stumped on is
"For the following questions, only use the cp command to copy files.
You should currently be inside your lab07 directory. Create a subdirectory inside this directory called ones and copy (working ... (1 Reply)
Hello Everyone,
I want to convert
Relative Path - /home/stevin/data/APP_SERVICE/../datafile.txt
to
Absolute Path - /home/stevin/data/datafile.txt
Is there a built-in tool in Unix to do this or any good ideas as to how can I implement this.
-Steve (5 Replies)
Hello,
I have a doubt:-
---------------------
Current script:-
################################################################################################
prefix=user@my-server:
find . -depth -type d -name .git -printf '%h\0' | while read -d "" path ; do (
cd "$path" || exit $?... (4 Replies)
I have a script in which i want to print absolute path of the same script irrespective of path from where i run script.
I am using
test.sh:
echo "pwd : `pwd`"
echo "script name: $0"
echo "dirname: `dirname $0`"
when i run script from /my/test/dir/struct as ../test.sh the output i... (10 Replies)
suppose i ahve a shell script Nsdnet.sh inside a directory /dialp/Release/bin
another file nsdnet_file.csv is under the same directory. Now in the shell script i have call a java file, which reads the csvfile from the commandline.
Now when i run the file as
$ ./Nsdnet.sh ./nsdnet_file.csv
then... (5 Replies)
I'm having problems accessing the Knoppix software on my current computer and the replacement CD I ordered hasn't arrived yet.
I have a guess at what the answer would be for this question but I am not sure as I cannot test it with the software.
I have to create a directory called class, and... (1 Reply)
I have to relatively get the path of a file to use it in the script.
The directory structure is /export/opt/XTools/ and under this there are several version directories - 1.0_A0, 1.0_A1, 1.0_A2 etc.,. The actual file is under these directories: installscript.sh
My script should pickup the... (4 Replies)
given a relative path, how do i convert it into a full one. i.e. if i am in
/home/polypus
and i am given foo/bar then to get a full path i can just concatinate it with pwd, but what if i am given "../mama"
how do i programmatically convert:
/home/polypus and ../mama into ... (4 Replies)
Hi,
I have a file with about 60 lines of path:
app-defaults/boxXYZ.......
I want to change this to /my/path/goes/here/app-defaults/boxXYZ, but of course vi doesn't like the regualr :s/old/new/ command.
Is there any other quick way to do this?
Thanks ;) (2 Replies)