<p><code>./my_shell_script.sh</code>表示当前工作目录“</em>中的<em>”<code>my_shell_script</code>。在</p>
<p>您是否尝试过用脚本中的<em><a href="http://www.linuxquestions.org/questions/linux-general-1/absolute-and-relative-paths-256350/#post1300204" rel="nofollow">absolute path</a></em>替换它?在</p>
<pre><code>subprocess.call(["/full/path/to/my_shell_script.sh",my_argument])
</code></pre>
<p>或者,如果脚本路径在当前的<a href="http://en.wikipedia.org/wiki/PATH_%28variable%29" rel="nofollow">PATH environment variable</a>中:</p>
^{pr2}$
<p>或者再次(如果脚本路径在当前路径中):</p>
<pre><code>subprocess.call(["bash", "-c", " ".join("my_shell_script.sh",my_argument)])
</code></pre>
<p>从上面可以看出,第一个和第二个解决方案需要一个适当的<em>shebang</em>(<code>#!/bin/bash</code>)作为脚本的第一行。第三种解决方案没有这种“限制”。在</p>
<hr/>
<p><strong>编辑:</strong></p>
<p>如果要启动路径与当前工作目录相关的脚本,则必须提供<a href="http://teaching.idallen.com/cst8207/12f/notes/160_pathnames.html#absolute-and-relative-pathnames" rel="nofollow"><em>relative path</em></a>。这允许Python脚本和Shell脚本在<em>周围移动,只要它们的<strong>相对</strong>位置不变</em>。在</p>
<p>例如,如果脚本位于当前工作目录的子目录<code>my_subdir</code>中,则可以编写:</p>
<pre><code>subprocess.call(["my_subdir/my_shell_script.sh",my_argument])
</code></pre>
<p>您还必须有机会使用<code>..</code>将<em>向上导航到</em>一个级别。你可以多次使用它来提升几个层次。例如:</p>
<pre><code>subprocess.call(["../../a/b/c/my_shell_script.sh",my_argument])
</code></pre>
<p>上面的例子将启动<code>my_shell_script</code>在<code>a/b/c</code>子目录中,从当前工作目录上方的<em>两个级别</em>开始。在</p>