【问题标题】:Using custom shell commands from python file使用来自 python 文件的自定义 shell 命令
【发布时间】:2020-08-05 22:01:05
【问题描述】:

我将尽力解释我面临的问题。 我在 linux 中创建了这个自定义 shell 命令

#!/bin/bash

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

我想要做的是使用os.system("create ") 从python 脚本调用它,但我收到此错误:sh: 1: create: not found 。 如果我尝试使用任何其他默认命令,例如os.system("date"),或者我只是尝试从终端调用我的命令,它就没有问题。 有没有办法从 python 文件访问自定义 shell 命令?还是我应该放弃这个想法?

【问题讨论】:

    标签: python shell command


    【解决方案1】:

    在运行您的 python 程序之前,您需要获取包含 create 脚本的文件(我们称之为 create.sh)。您还需要导出该函数,以便它可用于您生成的任何进程。例如:

    . create.sh
    export -f create
    python -c 'import os; os.system("create")'
    

    【讨论】:

      【解决方案2】:

      您是否尝试过提供命令的完整路径?

      您似乎只提供了命令的名称。您的 shell 可能知道在哪里可以找到它,但您可能需要为 Python 指定它。

      【讨论】:

      • @SimoneLiberti 我的意思是包含 bash 代码的文件的路径
      • 我实际上将命令存储在一个文件 (my_commands.sh) 中。我怎样才能访问它?
      • @SimoneLiberti 根据geeksforgeeks.org/python-os-system-method ,系统函数只会运行您输入的任何字符串。所以你可以输入完整的路径,比如 os.system("/path/to/file/my_commands.sh)"
      • 我试过 os.system("/home/simon/.my_commands.sh")os.system("/home/simon/.my_commands.sh create ") 但现在它什么也没做
      • @SimoneLiberti 您可以考虑将文件设为脚本并删除该函数。
      【解决方案3】:

      您可以像@majneeds2chill 提到的那样添加完整路径,前提是该函数在 bash 脚本中被调用。您还可以将完整路径添加到名为“create”的别名中,以营造自定义命令的感觉。

      【讨论】:

        猜你喜欢
        • 2013-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多