如何从 .screenrc 创建 sudo 窗口

如何从 .screenrc 创建 sudo 窗口

我创建了一个.screenrc文件,用于在运行时自动设置各种窗口screen。在一个窗口中,我想:切换到 root 用户,然后更改到某个目录。我目前在创建新屏幕窗口后手动执行此操作,如下所示:

  • sudo bash
  • cd /etc/[dir]/

我怎样才能在 中复制它.screenrc?我在其他地方读到过,要在一行上运行多个命令,可以使用&&,但我似乎无法让它工作sudo bash(可能是因为它创建了一个新的 bash 实例,因此其余命令要么被忽略,要么在新实例中运行然后退出)。

答案1

(可能是因为它创建了一个新的 bash 实例

su是的,它与几乎所有用户切换机制( 、等)相同sudo -s,但您的变体可以非常明显地表明bash正在运行新进程。

因此其余命令要么被忽略,要么在新实例中运行然后退出)。

不,父 shell 只是等待sudo(因此也等待新的 bash 实例)退出。(就像任何其他命令一样。)

  • 主外壳运行sudo bash并等待其退出。
    • sudo 运行bash并等待其退出。
      • bash 为您提供了一个交互式提示,您可以在其中运行 root 命令。
      • 当您输入“exit”时,bash 退出。
    • sudo 完成等待,清理并退出。
  • 主 shell 完成等待,如果有的话,运行下一个命令。

-c但是,你可以告诉任何 shell 使用其接受单个命令行的选项以非交互方式执行命令:例如bash -c "cd /etc && ls"。 (这在后台由ssh或使用su -c。)

要获得交互式 shell,只需确保该子命令中的最后一个命令是运行交互式 shell 的命令。(这涉及相当多的 bash 实例,但实际上不是问题。)

sudo bash -c "cd /etc/foo && bash"

相关内容