如何将GOPATH中第一个目录的bin子目录添加到PATH?

use*_*867 4 linux shell bash

echo $GOPATH 将打印:

/mnt/star/program/go/package:/mnt/star/git_repository/workspace/go_workplace
Run Code Online (Sandbox Code Playgroud)

有 2 个目录,我想将第一个目录的子目录附加bin/$PATH.

如果我写$PATH=$PATH:$GOPATH/bin,那么它实际上将 2 个目录附加到$PATH

  • /mnt/star/program/go/package
    这仅包含目录,它应该是/mnt/star/program/go/package/bin.
  • /mnt/star/git_repository/workspace/go_workplace/bin
    这实际上不应该添加到$PATH.

顺便说一句,有些情况下$GOPATH只包含一个目录,因此只需追加即可$GOPATH/bin

我正在寻找适合这两种情况的解决方案。那么,如何将其写入 bash 配置文件中?

Prv*_*dav 6

您可以使用:

PATH="$PATH:${GOPATH%%:*}/bin"
Run Code Online (Sandbox Code Playgroud)

或者

PATH="$PATH:${GOPATH%:*}/bin"
Run Code Online (Sandbox Code Playgroud)

两者都可以工作,因为最多可以有一个:.

之后将删除该部分:。因此,在您的第一种情况下,它将删除第二个目录,而在您的第二种情况下,将没有像 那样的模式:*,因此目录名称不会发生变化。