2017-12-19 27 views
0

tsh 스크립트에서 cygwin bash를 호출하고 bash를 연 직후에 일부 인수를 실행해야합니다. 내가이 오류Tcl 스크립트에서 cygwin bash로 인수 전달

couldn't execute "exec bash.exe -c {cd cygdrive\c\workset\CASTLE5\2_Castle5_Dev\1_Castle}": no such file or directory 
    while executing 
"exec $command" 

어떤 힌트를 얻을

set gitBash "" 

append gitBash "C:/cygwin/bin" 

cd $gitBash 

set command exec 

lappend command "bash.exe" 

lappend command "-c" 

lappend command "cd cygdrive/c/workset" 

문제는 다음과 같습니다 여기 내 코드입니까?

+1

근본적인 문제는 쉘을 시작하고 쉘에서 디렉토리를 변경 한 다음 쉘을 종료한다는 것입니다. XY 문제처럼 냄새가납니다. 실제 목표는 무엇입니까? –

답변

2

은 모든 인수를 단일 문자 문자열으로 사용하지 않습니다. {*} 구문은 Tcl 8.5이 필요하다는

% set command [list bash -c "cd /some/dir"] 
bash -c {cd /some/dir} 
% eval exec $command 
bash: line 0: cd: /some/dir: No such file or directory 
% exec {*}$command 
bash: line 0: cd: /some/dir: No such file or directory 
% 

참고 : 쉘 명령을 구성하는 가장 안전한 방법은 list를 사용하는 것입니다.

+0

많은 감사합니다, 지금은 오류가 표시되지 않지만, Cygwin의 bash는 나타나지 않습니다. 그것은 아무 일도 일어나지 않았습니다. – IbrahimShazly

+0

@IbrahimShazly 매우 빠르게 실행되었다가 다시 사라졌습니다 ('cd '는 실행하기위한 매우 빠른 명령이고 다른 명령을 수행하지 않고 결과를 볼 수 없기 때문에 부모 프로세스는 그렇지 않습니다 _ 아이의'cd'를보십시오). 이 창문은 단순히 나타나기 전과 눈/두뇌가 다시 사라지기 전에 그것을 등록 할 시간이 없었습니다. –