从通过 post-receive 挂钩创建的 ssh 会话调用时导出不起作用
Export doesn't work when called from ssh session created through post-receive hook
我在远程存储库中有这个 Git post-receive 挂钩,它 运行 在 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
而且我收到与未找到 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:
我可以手动 运行 钩子,它工作得很好,但出于某种原因,当我通过 运行 来自远程存储库的 git push
它时它不起作用.
内联内容默认有 shell 扩展 运行,所以你的变量在被调用的 shell 看到它们之前在文本中被扩展。引用定界符中的任何内容以将其关闭,或者转义您不想扩展内联的位,例如
cat <<\EOD
export GOPATH=~/go
export PATH=$GOPATH/bin:$PATH
EOD
或
cat <<EOD
export GOPATH=~/go
export PATH=$GOPATH/bin:$PATH
EOD
我在远程存储库中有这个 Git post-receive 挂钩,它 运行 在 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
而且我收到与未找到 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:
我可以手动 运行 钩子,它工作得很好,但出于某种原因,当我通过 运行 来自远程存储库的 git push
它时它不起作用.
内联内容默认有 shell 扩展 运行,所以你的变量在被调用的 shell 看到它们之前在文本中被扩展。引用定界符中的任何内容以将其关闭,或者转义您不想扩展内联的位,例如
cat <<\EOD
export GOPATH=~/go
export PATH=$GOPATH/bin:$PATH
EOD
或
cat <<EOD
export GOPATH=~/go
export PATH=$GOPATH/bin:$PATH
EOD