如何判断是否从远程计算机访问bash?

时间:2011-08-13 16:53:34

标签: bash

我正在尝试为一些机器写出动态bash配置文件,并且想知道是否有一个允许.bashrc的变量,如果它是远程访问的话。我已经看过一些使用X变量的例子,但这与两台机器无关。

2 个答案:

答案 0 :(得分:12)

if [ "$SSH_CONNECTION" ]; then
  echo I am remote
else
  echo I am local
fi

答案 1 :(得分:1)

当你通过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