1

私はUbuntu 9.04 x64を使用しています。

私はsudo bashを呼び出すファイルstartup.rbを持っているので、15分ごとにパスワードを入力せずに管理タスクを実行するためのルートコンソールが常にあります。

このスクリプトは別のスクリプトStartup.rbによって呼び出され、両方のファイルの内容は次のようになります -

ファイル~/Startup.rb

#!/usr/bin/ruby
system "gnome-terminal --maximize -x ruby ~/startup.rb"

ファイル~/startup.rb

#!/usr/bin/ruby
`sudo some-repetitive-administrative-task`
....
....
`sudo bash` #Not using `sudo -i`, since that makes `pwd` -> /root

~/Startup.rbファイルをスタートアップ アプリケーションリストに含めました。

ここでの問題は、のターミナルでsudo bash、何かを入力して何らかの出力を期待しても、何も得られないことです。だから私が書くecho hello worldと、私は何の出力も得られません。sudo bashこれにより、コマンドの標準出力 (stdout) はコンソールではないと思われます。

だから、なぜこれが起こっているのか知りたいですか?現在の stdout パスを知るにはどうすればよいですか? または、stdout を現在のコンソールに戻すにはどうすればよいですか?

- ありがとう

4

2 に答える 2

5

Ruby からシステム コマンドを実行するために不適切な方法を使用しています。代わりにこれを試してください:

#!/usr/bin/ruby

system 'bash'

使用している構文 (バッククォートを使用) は、コマンドの標準出力をキャプチャし、文字列で返します。そのため、端末に表示されません。

ここでは、Ruby からコマンドを実行するさまざまな方法の優れたレビューを紹介します: 6 Ways to Run Shell Commands in Ruby .

于 2009-08-04T07:56:31.623 に答える