我回应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。