Использование пользовательских команд оболочки из файла python - PullRequest
1 голос
/ 06 августа 2020

Я постараюсь изо всех сил объяснить проблему, с которой я столкнулся. Я создал эту настраиваемую команду оболочки в linux

#!/bin/bash

function create() {
    python3 .create.py $1
    cd /home/simon/Linux_Storage/Projects/$FILEPATH$1
    code .
    echo "Project created."
    cd
}

Я пытаюсь вызвать ее из сценария python, используя os.system("create "), но получаю эту ошибку: sh: 1: create: not found . Если я попытаюсь использовать любую другую команду по умолчанию, например os.system("date"), или просто попытаюсь вызвать свою команду с терминала, это сработает без проблем. Есть ли способ получить доступ к пользовательским командам оболочки из файла python? Или отказаться от идеи?

Ответы [ 3 ]

1 голос
/ 06 августа 2020

Перед запуском вашей программы python вам необходимо получить файл, содержащий сценарий create (давайте назовем его create. sh). Вам также необходимо экспортировать функцию, чтобы она была доступна любому процессу, который вы создаете. Например:

. create.sh
export -f create
python -c 'import os; os.system("create")'
0 голосов
/ 06 августа 2020

Вы можете добавить полный путь, как указано в @ majneeds2chill, при условии, что функция вызывается внутри сценария bash. Вы также можете добавить полный путь к псевдониму под названием «create», чтобы придать особый вид команде.

0 голосов
/ 06 августа 2020

Вы пытались указать полный путь к команде?

Похоже, вы указали только имя команды. Ваша оболочка может знать, где его найти, но вам может потребоваться указать его для Python.

...