[]linux Shell gets the absolute path of the currently executing script
A common misconception is to use the PWD command, which is "Print name of current/working directory," which is what this command really means, the current working directory, which is not meant to be a directory where the script resides. So, this is wrong. You can try bash. shell/a.sh,a.sh content is pwd, you will find that the path to the command is displayed/home/june, not a.sh's path:/home/june/shell/a.sh
Another fraught answer, is $ $, and this is not true, this is a special variable in bash environment, the real meaning is:
Expands to the name of the shell or shell script. This are set at shell initialization. If Bash is invoked with a file of commands, the $ is set to the name of this file. If Bash is started with THE-C option, then $ is set to the ' the ' the ' the ' the ' the ' the ' the ' the ' the ' the ' to be executed, if one Sent. Otherwise, it is set to the file name used to invoke bash, as given by argument zero.
This $ may be several values that are related to the way the call is being invoked:
Use a file to invoke bash, and that $ value is the name of that file (not the absolute path. Oh)
When you start bash with the-C option, the actual command is read from a string, followed by a special variable reference starting with $ (regardless of the path) if there are other arguments.
In addition, the $ $ is set to the name of the file that called bash (not an absolute path)
Here's a comparison of the correct answers:
basepath=$ (CD ' DirName $ '; pwd)
Under this explanation BasePath:
DirName $, get the parent directory of the currently executing script file
CD ' DirName $ ', enter this directory (toggle current working directory)
PWD, display the current working directory (after CD execution)
Thus, we get the path to the current script being executed.