Команда не нашла попытку скрипта python для bash

Изменить: В более поздних версиях Ubuntu (этот вопрос был написан в 2011 году, в конце концов), все переместилось в gsettings. См.: Как изменить фон рабочего стола из командной строки в Unity?

Это настройка gconf: /desktop/gnome/background/picture_filename. Вы можете установить его значение, выполнив следующее:

gconftool-2 -t string -s /desktop/gnome/background/picture_filename <path>

Очевидно, замените <path> полным путем на фоновое изображение, которое вы хотите отобразить.

Если вы хотите посмотрите, что еще доступно из приятного графического интерфейса, запустите:

gconf-editor /desktop/gnome/background/
0
задан 11 September 2017 в 14:26

9 ответов

Почему вы используете Python, если все, что вы делаете с ним, - это вызвать команды оболочки? Простой сценарий оболочки сделает это намного проще, и до тех пор, пока большинство ваших команд Python используют модуль os.system или subprocess, вы в основном обертываете скрипт оболочки внутри программы Python (с дополнительными ловушками), что потребует от вас

Вот как вы можете добиться того же (насколько я понимаю) сценария оболочки:

#!/bin/sh
cd Downloads/smartgit
bin/smargit.sh

Или проще:

Downloads/smartgit/bin/smargit.sh
1
ответ дан 22 May 2018 в 18:34

Почему вы используете Python, если все, что вы делаете с ним, - это вызвать команды оболочки? Простой сценарий оболочки сделает это намного проще, и до тех пор, пока большинство ваших команд Python используют модуль os.system или subprocess, вы в основном обертываете скрипт оболочки внутри программы Python (с дополнительными ловушками), что потребует от вас

Вот как вы можете добиться того же (насколько я понимаю) сценария оболочки:

#!/bin/sh cd Downloads/smartgit bin/smargit.sh

Или проще:

Downloads/smartgit/bin/smargit.sh
1
ответ дан 18 July 2018 в 07:03

Почему вы используете Python, если все, что вы делаете с ним, - это вызвать команды оболочки? Простой сценарий оболочки сделает это намного проще, и до тех пор, пока большинство ваших команд Python используют модуль os.system или subprocess, вы в основном обертываете скрипт оболочки внутри программы Python (с дополнительными ловушками), что потребует от вас

Вот как вы можете добиться того же (насколько я понимаю) сценария оболочки:

#!/bin/sh cd Downloads/smartgit bin/smargit.sh

Или проще:

Downloads/smartgit/bin/smargit.sh
1
ответ дан 24 July 2018 в 18:43

Нет смысла запускать команды cd в функции os.system(...) Python, так как каждый из этих вызовов порождает свою собственную отдельную оболочку, внутри которой запускается команда, которая не влияет на основной процесс или оболочки другой функции звонки. Поэтому cd одного вызова не влияет на рабочий каталог других вызовов.

Вместо этого вы можете использовать os.chdir(...), чтобы изменить рабочий каталог всего вашего процесса Python.

Тем не менее, вы не должны полагаться на неявные относительные пути, подобные этому в вашем приложении, это сломается, если вы запустите скрипт из любого другого места, кроме домашнего. Возможно, вы хотите префикс пути с ~/ относительно вашего домашнего каталога.

3
ответ дан 22 May 2018 в 18:34

os.system() запускает оболочку, выполняет команду и закрывает эту оболочку. Эффект cd потерян. Измените каталог с самим Python:

os.chdir("Downloads/smartgit")
subprocess.call(["bin/smargit.sh"])

Еще лучше, что chdir вообще? Почему бы не вызвать скрипт напрямую:

smartgit_path = os.path.expanduser("~/Download/smartgit/bin/smartgit.sh")
subprocess.call([smartgit_path])
3
ответ дан 22 May 2018 в 18:34
  • 1
    malikarumi @ Tetuoan2: ~ $ python smartgit.py Traceback (последний последний вызов): Файл «smartgit.py», строка 16, в & lt; module & gt; smartgit_path = os.expanduser («~ / Download / smartgit / bin / smartgit.sh») AttributeError: объект 'module' не имеет атрибута 'expanduser' – Malik A. Rumi 12 September 2017 в 22:34
  • 2
    @ MalikA.Rumi о, да, опечатка. expanduser и связанные функции находятся в os.path – muru 13 September 2017 в 03:29

Нет смысла запускать команды cd в функции os.system(...) Python, так как каждый из этих вызовов порождает свою собственную отдельную оболочку, внутри которой запускается команда, которая не влияет на основной процесс или оболочки другой функции звонки. Поэтому cd одного вызова не влияет на рабочий каталог других вызовов.

Вместо этого вы можете использовать os.chdir(...), чтобы изменить рабочий каталог всего вашего процесса Python.

Тем не менее, вы не должны полагаться на неявные относительные пути, подобные этому в вашем приложении, это сломается, если вы запустите скрипт из любого другого места, кроме домашнего. Возможно, вы хотите префикс пути с ~/ относительно вашего домашнего каталога.

3
ответ дан 18 July 2018 в 07:03

os.system() запускает оболочку, выполняет команду и закрывает эту оболочку. Эффект cd потерян. Измените каталог с самим Python:

os.chdir("Downloads/smartgit") subprocess.call(["bin/smargit.sh"])

Еще лучше, что chdir вообще? Почему бы не вызвать скрипт напрямую:

smartgit_path = os.path.expanduser("~/Download/smartgit/bin/smartgit.sh") subprocess.call([smartgit_path])
3
ответ дан 18 July 2018 в 07:03

Нет смысла запускать команды cd в функции os.system(...) Python, так как каждый из этих вызовов порождает свою собственную отдельную оболочку, внутри которой запускается команда, которая не влияет на основной процесс или оболочки другой функции звонки. Поэтому cd одного вызова не влияет на рабочий каталог других вызовов.

Вместо этого вы можете использовать os.chdir(...), чтобы изменить рабочий каталог всего вашего процесса Python.

Тем не менее, вы не должны полагаться на неявные относительные пути, подобные этому в вашем приложении, это сломается, если вы запустите скрипт из любого другого места, кроме домашнего. Возможно, вы хотите префикс пути с ~/ относительно вашего домашнего каталога.

3
ответ дан 24 July 2018 в 18:43

os.system() запускает оболочку, выполняет команду и закрывает эту оболочку. Эффект cd потерян. Измените каталог с самим Python:

os.chdir("Downloads/smartgit") subprocess.call(["bin/smargit.sh"])

Еще лучше, что chdir вообще? Почему бы не вызвать скрипт напрямую:

smartgit_path = os.path.expanduser("~/Download/smartgit/bin/smartgit.sh") subprocess.call([smartgit_path])
3
ответ дан 24 July 2018 в 18:43
  • 1
    malikarumi @ Tetuoan2: ~ $ python smartgit.py Traceback (последний последний вызов): Файл «smartgit.py», строка 16, в & lt; module & gt; smartgit_path = os.expanduser («~ / Download / smartgit / bin / smartgit.sh») AttributeError: объект 'module' не имеет атрибута 'expanduser' – Malik A. Rumi 12 September 2017 в 22:34
  • 2
    @ MalikA.Rumi о, да, опечатка. expanduser и связанные функции находятся в os.path – muru 13 September 2017 в 03:29

Другие вопросы по тегам:

Похожие вопросы: