我已经在 MacBook Pro M1 上安装了 CMake,并在cmake
中建立了符号链接/usr/local/bin
。我尝试了不同的方法来调用cmake
和检查$PATH
。以下是所有案例的报告:
ssh ali@mac cmake
zsh:1: command not found: cmake
ssh ali@mac <<EOF
cmake
EOF
Pseudo-terminal will not be allocated because stdin is not a terminal.
#output from cmake (it works)
ssh ali@mac
cmake
#output from cmake (it works)
ssh ali@mac echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin
ssh ali@mac 'echo $PATH'
/usr/bin:/bin:/usr/sbin:/sbin
ssh ali@mac <<EOF
echo $PATH
EOF
Pseudo-terminal will not be allocated because stdin is not a terminal.
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin
ssh ali@mac
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
ssh ali@mac which cmake
cmake not found
ssh ali@mac <<EOF
which cmake
EOF
Pseudo-terminal will not be allocated because stdin is not a terminal.
/usr/local/bin/cmake
ssh ali@mac
which cmake
/usr/local/bin/cmake
运行该命令ls -l /usr/local/bin/cmake
,无论是 ssh 的直接参数还是 heredoc 或在 ssh 连接内,都会给出以下输出:
lrwxr-xr-x 1 root wheel 42 Mar 25 17:42 /usr/local/bin/cmake -> /Applications/CMake.app/Contents/bin/cmake
我的 Mac 上的软件版本:
sw_vers
ProductName: macOS
ProductVersion: 11.2.1
BuildVersion: 20D75
我不明白为什么将命令传递给 ssh 的结果与使用 heredoc 传递的结果不同。我也在PermitUserEnvironment PATH
/etc/ssh/sshd_config 中设置并重新启动系统,它没有改变任何东西。我没有创建环境文件,因为无法找到 cmake 的情况已经./usr/local/bin
在$PATH
答案1
谢谢肯斯特的评论,我了解到我使用 来从本地机器获取 $PATH ssh ali@mac echo $PATH
,运行时ssh ali@mac 'echo $PATH'
显示/usr/local/bin
不是路径的一部分。这回答了我上面的误解。
我能够通过以下方式解决问题为 Mac ssh 设置 PATH。
感谢大家的宝贵反馈。