如何判断bash是否正在从远程机器访问?

如何判断bash是否正在从远程机器访问?,bash,Bash,我试图为一些机器编写一个动态bash配置文件,我想知道是否有一个变量允许远程访问.bashrc。我见过一些使用X变量的例子,但这与这两种机器无关 当您通过ssh连接时,您的bash进程是sshd的子进程($PPID是bash父进程的变量,如果您远程连接,则为ssh)。您可以检查: if ps ax | grep ^$PPID'.*sshd' &> /dev/null; then # do your stuff fi 编辑:我很无聊,用time来获取执行时间,发现这个版本明

我试图为一些机器编写一个动态bash配置文件,我想知道是否有一个变量允许远程访问
.bashrc
。我见过一些使用X变量的例子,但这与这两种机器无关

当您通过ssh连接时,您的bash进程是sshd的子进程($PPID是bash父进程的变量,如果您远程连接,则为ssh)。您可以检查:

if ps ax | grep ^$PPID'.*sshd' &> /dev/null; then  
  # do your stuff
fi
编辑:我很无聊,用
time
来获取执行时间,发现这个版本明显快了几毫秒:

if grep ^sshd: /proc/$PPID/cmdline &> /dev/null; then
  # do your stuff
fi

令人惊叹的。这听起来很疯狂,但没有显著的性能影响,对吧?不是真的。您可以从shell中运行ps-ax来查看需要多长时间——它只列出所有正在运行的程序。而且,grep很快。我添加了一个只使用
grep
和虚拟
/proc
文件系统的替代版本。稍微快一点不,但两者都是我所说的“瞬间”令人印象深刻!
13785
是常数吗?呃,该死!对不起,我不小心用$PPID替换了我的值。我现在就换。
if [ "$SSH_CONNECTION" ]; then
  echo I am remote
else
  echo I am local
fi