in reply to OP: invoking shell script with relative path and absolute path

I guess there is another compile.sh which is in a directory earlier in your $PATH. Maybe try

$ which compile.sh

to confirm/refute.

Replies are listed 'Best First'.
Re^2: OT: invoking shell script with relative path and absolute path
by bliako (Abbot) on Feb 10, 2020 at 16:38 UTC

    Just to make sure, did you insert the which compile.sh inside /home/vinoth/funtions.sh? Because path may be modified within function. Once you are there print the full path too (from within that function). If your path contains the dot early then ANY compile.sh script in script's current dir will be executed first. So within the function print PWD as well at the moment of attempted execution.

Re^2: OT: invoking shell script with relative path and absolute path
by vinoth.ree (Monsignor) on Feb 10, 2020 at 10:52 UTC
    Hi,

    which compile.shgives me correct path of compile.sh, that path is available in PATH variable.


    All is well. I learn by answering your questions...

      Without more data it's going to be hard to guess what's happening in that case. Here's an SSCCE which might help:

      cd /tmp cat > foo.sh <<EOT #!/bin/sh echo Relative path ./bar.sh echo Absolute path /tmp/bar.sh echo No path bar.sh EOT cat > bar.sh <<EOT #!/bin/sh echo bar running as \$0 EOT chmod 0755 foo.sh bar.sh sudo chown root bar.sh sudo cp -p bar.sh /usr/local/bin ./foo.sh

      Running this locally (not on Solaris!) gives this expected output:

      Relative path bar running as ./bar.sh Absolute path bar running as /tmp/bar.sh No path bar running as /usr/local/bin/bar.sh

      If you see the same, then you'll need to determine what's different about functions.sh and compile.sh compared to foo.sh and bar.sh. Don't forget to remove bar.sh from /usr/local/bin when you're done. Good luck.