testinglogin是否是scp连接

我回应login各种机器的统计数据,但这对SCP和SFTP是有问题的,是否有一个我可以testing的shellvariables?

在bash中,我使用shopt -q login_shell来testing。 例如在.bashrc中:

 if shopt -q login_shell then echo "interesting stuff" fi 

这应该保持你的scp / sftp“有趣的东西”。

根据手册页,你应该在$-testing“我”的存在。

PS1被设置,$ – 包括我如果bash是交互式的,允许一个shell脚本或一个启动文件来testing这个状态。

例如:

 if [[ $- == *i* ]] then # do interactive stuff fi 

从历史上看,在干净configuration的Bourne风格的shell中,它是“testingPS1是否已经设置”,但是如果某个小游戏将PS1输出到环境中,那么就会被破坏。

符合SUS标准的方法是testing'i'是否在$ – 中,正如Dennis指出的那样,尽pipe[[…]]是非标准的,==比较器也是如此。 所以最便携的符合标准的检查是:

 case $- in *i*) # do interactive stuff ;; esac 

然后,你有shopsh shopt -q login_shell (每个Cakemox),和[[ -o interactive ]][[ -o login ]] zsh。