同事在测试时需要执行远程命令(非交互式), 但是却经常遇到远程命令找不到的情况. 远程机器的默认SHELL为/bin/bash, 而且他也把要执行命令的PATH加入到了自己目录的.bashrc下. 然而, 很奇怪, 命令就是找不到, PATH就等于没有设置过一样.
细看了一下, 他的.bashrc执行的第一行是:
[ -z "$PS1" ] && return
PS1是交互式SHELL的提示符, 在非交互式的情况下, 该值为空. 故而, 本行意思是, 如果是非交互式的调用shell,则返回, 即后面的环境变量设置都将不被执行.
同事注销掉这一行以后, 命令运行终于成功.
所以, 如果需要后台和远程命令用到.bashrc之类的文件的话, 要注意把此种类型的行去掉.
阅读(1824) | 评论(0) | 转发(0) |