Vik*_*ary 1 ruby linux terminal subprocess
我正在使用Ubuntu 9.04 x64和
我有一个文件startup.rb,我在其中调用sudo bash,因此我总是有一个根控制台来执行管理任务,而不是每15分钟左右输入一次密码.
此脚本由另一个脚本Startup.rb调用,两个文件的内容都是这样的 -
文件〜/ Startup.rb
#!/usr/bin/ruby
system "gnome-terminal --maximize -x ruby ~/startup.rb"
Run Code Online (Sandbox Code Playgroud)
文件〜/ startup.rb
#!/usr/bin/ruby
`sudo some-repetitive-administrative-task`
....
....
`sudo bash` #Not using `sudo -i`, since that makes `pwd` -> /root
Run Code Online (Sandbox Code Playgroud)
我在启动应用程序列表中包含了〜/ Startup.rb文件.
现在的问题是,在终端中sudo bash,如果我输入内容并期望输出,我就不会得到任何输出.所以,如果我写echo hello world,我没有得到任何输出.这让我相信sudo bash命令的标准输出(stdout)不是控制台.
所以,我想知道为什么会这样?我怎么知道当前的stdout路径?或者如何将stdout恢复到我当前的控制台?
- 谢谢
您正在使用inapproriate方法从Ruby运行系统命令.试试这个:
#!/usr/bin/ruby
system 'bash'
Run Code Online (Sandbox Code Playgroud)
您正在使用的语法(使用反引号)捕获命令的标准输出并将其以字符串形式返回.这就是为什么你没有在终端上看到它.
以下是对从Ruby运行命令的不同方法的一个很好的回顾:在Ruby中运行Shell命令的6种方法.
| 归档时间: |
|
| 查看次数: |
1292 次 |
| 最近记录: |