2015-02-18 2 views
-1

Я никогда не писал сценарий, так что несите меня. Что мне нужно сделать, это сделать два сценария, которые я могу щелкнуть с рабочего стола, и откроет свой собственный терминал (и оставайтесь открытым, пока я не закрою его вручную), и запустите заданные строки. Для первого, я вручную запустить это:Написание скрипта для выполнения команд?

cd home/pi/PiBits/ServoBlaster/user 
sudo ./servod 

Для второго:

cd ~/scratchClient 
python crs/scratchClient.py -c servoblaster 

Как мне это сделать? Я прочитал несколько вещей о том, чтобы поставить xterm -e и такие перед ним, но ничто из этого не работает для меня ... Кстати, это будет использоваться на Raspbian Linux. EDIT, это работает для меня:
Ссылки: ubuntuforums.org/showthread.php?t=1336228 Линии, которая была использована: гном-терминала --execute bash -c "/path/scriptname ; bash"

ответ

1

Вам просто нужно добавить хижину, что означает включение этого в первая строка сценария:

#!/bin/sh

Это приводит к тому, Борн оболочки, которые будут использоваться для интерпретации сценария, это (возможно) тот же переводчик, который работает, когда вы находитесь в вашем терминале. Затем вы должны сделать скрипт исполняемым chmod +x <script>

+3

'/ bin/sh' является POSIX sh, а не bash; таким образом, описывая это как «Bourne (Again) Shell», является неуместным. Даже когда '/ bin/sh' является символической ссылкой на'/bin/bash', он отключает функции совместимости с POSIX. –

+0

Кроме того, я не удивлюсь, если проблема OP связана с 'sudo' отказом работать, когда stdin не подключен к терминалу (по умолчанию конфигурируется через'/etc/sudoers'). –

+0

Судо будет проблемой, да. Я всегда запускаю оба из них в корневом терминале, поэтому мне не нужно вводить его. Servoblaster Определенно нуждается в sudo, я не знаю о скрипте python. – RocketPenguin

0

Попробуйте это.

xterm -hold -e 'cd /home/pi/PiBits/ServoBlaster/user 
    sudo ./servod' & 

и

xterm -hold -e 'cd /home/pi/scratchClient 
    python crs/scratchClient.py -c servoblaster' & 

Если он не работает, возможно, вы должны объяснить, каким образом это не удается. Если это сработает, вы можете добавить shebang впереди, сохранить их в файлах, chmod +x этих файлов и щелкнуть по своему содержанию (или, возможно, приобрести более сложный вкус, когда вы просто запускаете их как фоновые задания без каких-либо xterm или других тревожных GUI).

+0

Я попробую их немного, и я дам вам знать. Приобрестите более изощренный вкус? Lols. Причина, в которой я нуждаюсь в них, - это потому, что в настоящее время ее все довольно плохо. Scratchclient часто терпит крах или даже полностью отключается от царапин и сервоклапанов. Когда происходит одно из этих событий, оно уведомляет меня в активном терминале. Он очень помогает при отладке, видит, что он был поврежден, или что servoblaster получает недопустимые размеры и т. Д. – RocketPenguin

+0

Он работает, но мгновенно закрывается. Нет ошибок, заставляет меня предположить, что он работает в фоновом режиме. Как я могу держать сессию открытой? И я нажимаю 'Execute' или' Execute in Terminal'? – RocketPenguin

+0

И я называю его 'name' или' name.sh'? – RocketPenguin

0

Решение должно было использовать gnome-terminal ... Найдено an UbuntuForums post с похожим вопросом, таким как мой.

gnome-terminal --execute bash -c "/path/scriptname ; bash" 
+0

Ссылка, пожалуйста? Попытайтесь помочь будущим посетителям с той же проблемой. – tripleee

+0

Ссылка: http://ubuntuforums.org/showthread.php?t=1336228 Используемая строка: 'gnome-terminal --execute bash -c '/ path/scriptname; bash" ' – RocketPenguin

+0

Пожалуйста, отредактируйте ваш ответ включить эту информацию и принять ответ, чтобы этот вопрос больше не возникал как неразрешенный. Благодарю. – tripleee

Смежные вопросы