我从10.04版本开始使用Ubuntu,发现它比Windows更友好。现在我使用的是“确切的12.04”。我为bash脚本创建了许多自定义启动程序,直到昨天才出现任何问题。
我安装了一个软件套件,它有多个可执行文件。主可执行文件abaqus位于\opt\softwaresname中,是指向/opt/softwaresname/executables/中的可执行abq610i的符号链接。
主exe abaqus需要一些命令行参数.我使用参数cae (即abaqus cae),但使用另一个命令以更好的模式呈现图形,因此最后的调用是:XLIB_SKIP_ARGB_VISUALS=1 abaqus cae
我在.bash_rc文件中为这个长命令创建了别名,如下所示:
alias abaquscae="XLIB_SKIP_ARGB_VISUALS=1 abaqus cae"
一切都很好,因为别名运行软件。作为一个懒惰的冠军,我想为这个创建一个开罗码头发射器。因此,我在框中输入了abaquscae,“命令单击启动”,并选中“在终端中运行”。然而,令我惊愕的是,单击发射器时,它出现了一个错误:
There was an error creating the child process for this terminal
Failed to execute child process "abaquscae" (No such file or directory)因此,我编写了一个小型bash脚本文件"abaquscae.sh":
#!/bin/sh
"XLIB_SKIP_ARGB_VISUALS=1 abaqus cae"并保存在其中,使其可执行,并在bash中运行时,再次得到类似的错误,即:
./abaquscae.sh: 2: ./abaquscae.sh: XLIB_SKIP_ARGB_VISUALS=1 abaqus cae: not found 现在我完全迷路了,我试过许多技巧。
1-删除bash脚本中的逗号,
让它成为dos2unix,
3-使用可执行文件的完整路径
但是这个脚本不是通过bash终端运行的。
命令(以及它的别名)在bash终端中正常工作,但是当它们通过其他通道(例如脚本/启动程序)运行时,终端不幸地无法识别它们:( ..
如果任何专家对如何解决这个问题有建议/信息,请分享。我会非常感激的。
发布于 2013-03-08 16:12:38
我觉得剧本应该是这样的:
#!/bin/bash
XLIB_SKIP_ARGB_VISUALS=1 /opt/softwaresname/abaqus cae还可以使用以下命令创建启动程序:
bash -c 'XLIB_SKIP_ARGB_VISUALS=1 /opt/softwaresname/abaqus cae'在命令行中的可执行文件名之前设置环境变量是CLI (命令行接口)shell的一个特性。如果将VARIABLE=value /path/to/executable放入启动程序中,读取启动程序(并有效启动可执行文件)的程序将试图找到一个名为"VARIABLE=value“的文件,当然也会失败。
该命令启动bash ( Ubuntu中的默认用户shell ),并告诉它执行( -c选项)字符串"XLIB_SKIP_ARGB_VISUALS=1 /opt/softwaresname/abaqus“,因此它将被解释为在CLI中键入该字符串时的情况。
发布于 2019-06-25 13:48:39
对我来说,我使用的是#!/bin/bash/而不是#!/bin/bash (最后有一个额外的/ )。投诉非常相似,但说:“子进程不是目录”。太有帮助了。
https://askubuntu.com/questions/265499
复制相似问题