如果我想返回给定可执行文件的路径,我可以运行:
which mysql
Run Code Online (Sandbox Code Playgroud)
例如返回:
/usr/bin/mysql
Run Code Online (Sandbox Code Playgroud)
我只想返回:
/usr/bin
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
executable=mysql
executable_path=$(command -v -- "$executable") &&
dirname -- "$executable_path"
Run Code Online (Sandbox Code Playgroud)
(不要使用which)。
当然,如果$executable是 shell 内置、函数或别名,那将不起作用。我不知道任何mysql内置的外壳。除非您之前定义过它们,否则它不会是函数或别名,但是您应该了解它。一个例外可能是bash支持导出的函数。
$ bash -c 'command -v mysql'
/usr/bin/mysql
$ mysql='() { echo test;}' bash -c 'command -v mysql'
mysql
Run Code Online (Sandbox Code Playgroud)