7 ms·
which "$(echo $0)" should work no matter the invokation ;p if full path, it still returns full path, if just "bash" or such it finds it from $PATH, badoom!
by jan6 6y ago
which "$(echo $0)"
should work no matter the invokation ;p
if full path, it still returns full path, if just "bash" or such it finds it from $PATH, badoom!
- aidenn0 6y agoWhich is not guaranteed to be present. 'command -v' should work on any posix shell though.
- 0x0 6y agoBut you might have customized your PATH after your shell was executed? So this does not seem accurate.
- xorcist 6y agoThe only reason anyone would want to say "$($echo $0)", echoing the variable through a subshell and substituting it with itself, is to rely on the subshell parameter splitting to remove duplicate field separators from the variable. That is likely not the case there, and any such file names are unlikely to exist. Just say: which "$0"
- em500 6y agoAs the author notes in the 2nd section, that will return the location of the shell binary in the user path, which is not necessarily the one that is currently running.
- contingencies 6y agoNah. $ which "$(echo $0)" which: illegal option -- b usage: which [-as] program ... $ echo $0 -bash OSX. True story.
- SAI_Peregrinus 6y agoOnly for POSIX shells. fish: $(...) is not supported. In fish, please use '(echo)'. which "$(echo $0)" ^ ;)