-2

all:
シェルスクリプトa.shがあります:

#/bin/bash -x -n

source /etc/profile  

test.cプログラムはsystem()関数を使用して、このスクリプトを呼び出します。

#include <stdio.h>
int main(void)
{
    system("/data/nan/a.sh");
    return 0;
}  

コンソールで直接a.shを呼び出すとわかります。

./a.sh  

大丈夫です。

ただし、cプログラムを実行します。

./test  

「ソース:見つかりません」と出力します。

原因はsystem()関数が/ bin/shを使用して.shスクリプトを実行している可能性があることを私は知っています。ただし、「#/ bin/bash」を追加してa.shの先頭を追加します。なぜこれが起こるのですか?よろしくお願いします!

よろしく
ナンシャオ

4

1 に答える 1

4

!あなたはシェバンに欠けています:

#!/bin/bash -x -n
 ^
于 2013-03-06T06:13:13.397 に答える