注意sudo执行时的shell环境与当前不同

记录一次环境问题

$ jmap -perstat javapid

提示我没有权限,然后

$ sudo jmap -perstat javapid

提示 jvm版本不同,很奇怪明明jvm用的同一个版本;后才发现原来 sudo 之后所用的命令jmap已经不是当前环境(PATH)下的了

当前环境,我设置了profile里的PATH环境变量,优先用 /usr/alibaba/java/bin
而我的系统里还有一个openjdk,当使用sudo 时实际是用的 /usr/bin/jmap 而非 /usr/alibaba/java/bin/jmap

删除了openjdk-7-jdk 之后,发现sudo jmap会提示找不到jmap命令,确实因为其环境变量并没定义路径/usr/alibaba/java/bin。如何在用sudo的时候使用当前的环境呢?使用-i参数:

$ sudo -i jmap javapid 

Leave a Reply

Your email address will not be published. Required fields are marked *