从通过后接收挂钩创建的ssh会话中调用时,导出不起作用

Whi*_*aws 1 git ssh bash environment-variables githooks

我在远程存储库中有这个Git接收挂钩,该存储库在SSH会话中运行一堆命令:

#!/bin/bash
ssh -q admin@node-one << EOF
    export GOPATH=~/go
    export PATH=$GOPATH/bin:$PATH
    echo $PATH
    echo $GOPATH
    cd ~/portfolio
    ./kill.sh
    git pull
    make build
    ./run.sh
EOF

Run Code Online (Sandbox Code Playgroud)

我收到与找不到goimports有关的错误,因为export在这种情况下似乎无法正常工作。

remote: /usr/lib/git-core:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
remote: 
Run Code Online (Sandbox Code Playgroud)

我可以手动运行该钩子,但效果很好,但是由于某些原因,当我git push从远程存储库中通过a对其运行时,它不起作用。

jth*_*ill 6

内联内容默认情况下会运行shell扩展,因此您的变量将在被调用的shell看到它们之前在文本中进行扩展。引用定界符中的任何内容以将其关闭,或转义您不希望扩展内联的位,例如

cat <<\EOD
    export GOPATH=~/go
    export PATH=$GOPATH/bin:$PATH
EOD
Run Code Online (Sandbox Code Playgroud)

要么

cat <<EOD
    export GOPATH=~/go
    export PATH=\$GOPATH/bin:\$PATH
EOD
Run Code Online (Sandbox Code Playgroud)