Debootrap:非交互式 shell 扩展 PATH 变量

Debootrap:非交互式 shell 扩展 PATH 变量

我使用 debootstrap 安装了 debian(debootstrap --arch=amd64 stretch /targethttp://httpredir.debian.org/debian)。当我检查我的 PATH 变量时,我得到:

ssh git@srv 'echo $PATH'
/usr/bin:/bin

我如何扩展它并包括例如 /usr/local/bin?

/etc/密码:

git:x:108:112:git version control,,,:/home/git:/bin/sh

我已经尝试了以下方法,但没有成功,因为这些文件只能由交互式 shell 读取。谢谢您的建议。

echo 'export PATH="/usr/a1:$PATH"' >> /etc/profile

echo 'PATH="/usr/a2:$PATH"' >> /etc/environment

echo 'export PATH="/usr/a3:$PATH"' >> /home/git/.profile
chown git:git /home/git/.profile

echo 'export PATH="/usr/a4:$PATH"' >> /home/git/.bashrc
chown git:git /home/git/.bashrc

echo 'PATH="/usr/a5:$PATH"' >> /home/git/.ssh/rc
chown git:git /home/git/.ssh/rc

echo 'export PATH="/usr/a6:$PATH"' >> /home/git/.ssh/environment
chown git:git /home/git/.ssh/environment

答案1

像这样的 SSH 命令不受登录或交互环境变量的影响。

这个问题与这里提出的问题类似: https://unix.stackexchange.com/questions/332532/how-to-set-path-when-running-a-ssh-command

尝试这样做:

echo "export PATH=$PATH:/usr/local/bin" >> ~/.ssh/environment

答案2

您可以在远程主机上的登录 shell 中执行命令,这将处理您的 shell 配置文件(例如~/.profile等):

ssh user@host 'exec $SHELL -l -c "echo $PATH; commmand; another-command"'

根据您要执行的操作,可能需要告知ssh创建一个伪tty:

ssh user@host -t 'exec $SHELL -l -c "command-that-needs-tty"'

相关内容