sudo 不保留 PS1

3 sudo

下面的配置在我的/etc/sudoers

Defaults    !visiblepw
Defaults    always_set_home
Defaults    env_reset
Defaults    env_keep =  "COLORS EDITOR DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults    env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults    env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults    env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults    env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
Run Code Online (Sandbox Code Playgroud)

sudo su我的PS1终端更改为系统默认值时;无视我的.bashrc PS1设置。我该如何解决这个问题,以便在sudo suing时不会丢失环境变量?

奇怪的; 它正在出口,EDITORPS1由于某种原因没有出口;就像它被强行覆盖一样;我怎么能阻止这个?

当我运行时sudo -V要保留的变量PS1被列出;它没有列在要删除的变量中。

phe*_*mer 9

不要使用sudo su. 这是对 的滥用/无用使用su。正确的等价物是sudo -s

如果要保留环境变量,则需要sudo -Es.


如果您发现它$PS1仍在更改,则您可能有一个脚本来执行此操作。您可以通过执行sudo -Es $SHELL -x和阅读输出来找出位置。

  • @josten你可以看到通过执行“sudo -E env”保留了什么。确保“PS1”已被导出(“export PS1”),因为这不是必需的。 (2认同)
  • @Patrick - 是的,我尝试了几种“sudo”方法,它们都导致了“growisofs”。... :-( Growthisofs 正在 sudo 下执行,正在中止!有关更多详细信息,请参阅 Growthisofs 手册页中的“注释”段落... (2认同)

mir*_*los 5

一两年前,Unix 系统 shell 的作者和包维护者一致认为通常最好不要 export PS1(由于各种 shell 之间的巨大语法差异以及某些 shell 在提供提示时的某些“爆炸性”行为其他贝壳)。我们都同意移动PS1初始化交互shell启动文件,那就是~/.mkshrc~/.kshrc~/.bashrc等。

免责声明:我是 mksh 开发人员。

  • @mikeserv AIUI AT&T ksh93 和 GNU bash 也是由个人开发的(分别是 David Korn 和 Chet Ramey)。 (2认同)