2014-10-13 3 views
1

CentOS 7.0을 사용 중이며 Pydev 환경에 Eclipse Kepler를 설치했습니다.Eclipse의 Pydev 환경에서 쉘 스크립트를 실행할 수 없습니다.

import subprocess 
subprocess.call(["./test1.csh"]) 

이 C 쉘 스크립트는 터미널에서 실행하고 나는 "LS"또는 "같은 명령을 실행하는 경우에도"PWD가 나는 올바른 얻을 다음과 같이 파이썬 사용하여 하위 프로세스를 통해 간단한 C 쉘 스크립트를 실행하려면 출력 예 내가 subprocess.call을 실행할 때

subprocess.call(["ls"]) # give me the list of all files 
subprocess.call(["pwd"]) # gives me the location of current directory. 

그러나 ([ "./ test1.csh"]), 나는 다음과 같은 오류 얻을 :

Traceback (most recent call last): 
File "/home/nishant/workspace/codec_implement/src/NTTool/raw2waveconvert.py", line 8, in <module> 
    subprocess.call(["./test1.csh"]) 
File "/usr/lib64/python2.7/subprocess.py", line 524, in call 
return Popen(*popenargs, **kwargs).wait() 
File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__ 
errread, errwrite) 
File "/usr/lib64/python2.7/subprocess.py", line 1308, in _execute_child 
raise child_exception 
OSError: [Errno 13] Permission denied 

는 어디서 잘못된 것입니까? 제발 제안

+2

이 스크립트의 실행 비트를 설정 했습니까? 'chmod + x test1.csh'? 첫 번째 줄에는 적절한 [shebang] (http://en.wikipedia.org/wiki/Shebang_%28Unix%29)이 있습니까? –

+0

질문에서 언급했듯이 터미널에서 실행 중입니다. 즉, c 쉘 터미널이며 파일도 실행 가능합니다. – nprak

+0

@nprak :'subprocess.call()'은 기본적으로 어떤 쉘도 실행하지 않습니다. 'test1.csh'의 상단에'#!/bin/sh'가 보이십니까? – jfs

답변

2

test1.csh 파일이 실행 가능한지 확인하십시오. Lukas Graf가 주석을 달았을 때 첫 번째 줄에 새끼 고양이 (#!...)도 확인하십시오.

파이썬으로 실행하기 전에 쉘에서 실행하는지 확인하십시오.

$ ls -l test1.csh 
... 
$ ./test1.csh 

현재 작업 디렉토리는 터미널에서 실행할 때와 다릅니다. 쉘 스크립트의 전체 경로를 지정하십시오. 또는 PyDev에서 작업 디렉토리 설정을 변경하십시오.

UPDATE

앞에 추가 쉘 실행 :

import subprocess 
subprocess.call(["csh", "./test1.csh"]) 
+0

질문에서 언급했듯이 터미널에서 실행 중입니다. 즉, c 쉘 터미널이며 파일도 실행 가능합니다. – nprak

+0

@ user2658684, 전체 경로를 지정하면 어떻게됩니까? – falsetru

+0

@falsetrue, 전체 경로를 지정해도 동일한 오류가 발생하며 쉘 스크립트가 C 쉘 터미널에서 실행 중임을 언급합니다. – nprak

관련 문제