J'utilise Ubuntu 9.04 x64 et,Trouvez la stdout actuelle ou comment rediriger la sortie vers la console
J'ai un fichier startup.rb dans lequel j'appelle bash sudo, de sorte que je Toujours avoir une console racine pour effectuer des tâches administratives sans taper le mot de passe toutes les 15 minutes environ.
Ce script est appelé par un autre script Startup.rb et le contenu des deux fichiers sont comme ça -
Fichier ~/Startup.rb
#!/usr/bin/ruby
system "gnome-terminal --maximize -x ruby ~/startup.rb"
Fichier ~/démarrage .rb
#!/usr/bin/ruby
`sudo some-repetitive-administrative-task`
....
....
`sudo bash` #Not using `sudo -i`, since that makes `pwd` -> /root
J'ai inclus t il ~/Startup.rb fichier dans Startup Applications liste.
Maintenant, le problème est que, dans le terminal de sudo bash
, si je tape quelque chose et attend une sortie, je n'en ai pas. Donc, si j'écris echo hello world
, je ne reçois aucune sortie. Ce qui m'amène à croire que la sortie standard (stdout) de la commande sudo bash
est et non la console. Donc, je veux savoir pourquoi cela se passe-t-il? Comment puis-je connaître le chemin de stdout actuel? Ou comment puis-je restaurer stdout sur ma console actuelle?
- merci
Eh bien c'est frustrant, parce que j'ai toujours utilisé le système ("") jusqu'à récemment quand j'ai découvert ''. J'ai essayé presque tous les moyens possibles, et ai-je manqué d'essayer system()? Même dans le même fichier 'startup.rb', toutes les autres commandes sont exécutées en utilisant system() sauf celle-ci car j'ai ajouté cette ligne récemment. C'est fou. –