su的-c选项

su的-c选项

-c 选项在 su 命令中的作用是指定要执行的命令。也就是说,它允许你在切换到目标用户后立即执行一个命令,然后返回到原来的用户会话。

例:

 sudo su game -c "/bin/sh /export/install/example.sh"

当使用 -c 选项时,su 切换到 game 用户后,会立即执行 /bin/sh /export/install/example.sh 脚本。执行完脚本后,用户会话会自动结束并返回到原来的用户。这个过程是非交互的。

不使用 -c 的情况

你可以不使用 -c 选项直接切换到 game 用户,并在切换用户后手动执行命令。例如:

 sudo su game
 /bin/sh /export/install/example.sh

以上命令会:

  1. 切换到 game 用户,并进入一个交互式 shell 环境。

  2. 在交互式环境中手动运行 /bin/sh /export/install/example.sh

结束 game 用户会话后,你需要手动退出以返回到原来用户的会话,这种情况下是交互的。

使用 -c 选项的好处

  • 自动化: 当你需要自动执行某个命令如脚本并且不希望有人工干预时,-c 选项非常有用。例如,在脚本中调用或通过调度程序(如 cron)定期运行任务时,使用 -c 可以简化操作。

  • 简洁性: 使用 -c 选项可以使命令更加简洁,一行命令可以完成所有操作。避免了手动切换用户和执行命令的过程。

不使用 -c 选项的情况

  • 交互式需求: 当你需要切换到目标用户并持续在用户环境中做更多操作时,不使用 -c 选项更合适。例如,在调试、测试或其他需要长时间驻留在目标用户会话中的情况。

实际示例对比

使用 -c 选项
 sudo su game -c "/bin/sh /export/install/example.sh"
  • 切换到 game 用户并立即运行指定的脚本。

  • 执行完后自动退出。

不使用 -c 选项
 sudo su game
  • 切换到 game 用户,进入交互式 shell。

  • 手动运行脚本:

     /bin/sh /export/install/example.sh
  • 手动退出 game 用户会话:

     exit

两种方式各有优缺点,主要取决于你的使用场景和需求。

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值