与えられた実行可能ファイルのディレクトリをどのように返しますか?

与えられた実行可能ファイルのディレクトリをどのように返しますか?

特定の実行可能ファイルのパスを返すには、次のように実行できます。

which mysql

たとえば、次を返します。

/usr/bin/mysql

私は戻ってきたいだけです:

/usr/bin

どうすればいいですか?

ベストアンサー1

executable=mysql

executable_path=$(command -v -- "$executable") &&
  dirname -- "$executable_path"

使用しないでくださいwhich)。

$executableもちろん、シェル組み込み、関数、またはエイリアスの場合は機能しません。mysqlこの機能が組み込まれたシェルがあるかどうかはわかりません。以前に定義していない限り、関数やエイリアスではありませんが、それを知っておく必要があります。bashエクスポートされた関数のサポートは例外かもしれません。

$ bash -c 'command -v mysql'
/usr/bin/mysql
$ mysql='() { echo test;}' bash -c 'command -v mysql'
mysql

おすすめ記事