为什么 newgrp 会改变我的 PS1 以及如何防止它?

为什么 newgrp 会改变我的 PS1 以及如何防止它?

我有一个定制的 PS1 来显示几个参数。当我使用 切换到不同的组时newgrp,它会将我的 PS1 切换为默认值 ($),这很烦人。即使我从更改的组切换回默认组,默认值仍然保留。

有什么方法可以阻止它这样做并保留我在 .profile 中设置的 PS1 吗?

>uname -a
SunOS he2unx207 5.10 Generic_147440-19 sun4u sparc SUNW,Sun-Fire-880

当然,如果我在 newgrp 之后资源化我的 .profile,PS1 会正确应用,但我很恼火,因为 newgrp 有效地取消了 .profile 中设置的内容。为什么它不能只更改我关联的有效组而不更改其他设置?

答案1

如果导出PS1,则不应重置该值。来自索拉里斯星newgrp 联机帮助页:

任何未导出的变量都将重置为 null 或其默认值。导出的变量保留其值。系统变量(例如PS1PS2PATHMAILHOME)将重置为默认值,除非它们已由系统或用户导出。例如,当用户具有PS1$(默认)以外的主提示字符串 ( ) 并且尚未导出时PS1,用户的PS1主提示字符串将被设置为默认提示字符串 $,即使 newgrp 因错误而终止。请注意,shell 命令导出(请参阅sh(1)和set(1))是导出变量的方法,以便它们在调用新 shell 时保留其分配的值。

或者,您可以传递-标志来newgrp重新初始化环境,就像您刚刚登录一样。

相关内容