csh: 포크 시 작업 + PID 제거

csh: 포크 시 작업 + PID 제거

Bash를 사용하면 다음을 실행할 수 있습니다.

$ ssh bashuser@localhost '( ls -d / nosuchfile ) & echo foo; wait'
foo
ls: cannot access nosuchfile: No such file or directory
/

csh를 사용하여 동일한 작업을 수행하려고 하면 다음과 같은 결과가 나타납니다.

$ ssh cshuser@localhost '( ls -d / nosuchfile ) & echo foo; wait'
[1] 187253
foo
ls: cannot access nosuchfile: No such file or directory
/
[1]    Exit 2                 ( ls -d / nosuchfile )

bash와 동일한 출력을 얻고 싶습니다. 피하는 방법 [1] PID[1] Exit ...? 어떻게든 자동 모드로 들어갈 수 있나요 csh?

물론 ls이는 echo foo단지 예일 뿐입니다. 실제로는 훨씬 더 복잡하며 로그인 쉘에서 실행하는지에 따라 stdout 및 stderr이 필요하므로 간단한 grep -v출력이 작동하지 않습니다.

답변1

마법 없이는 할 수 없는 것처럼 보입니다(즉, 옵션이 없습니다). 그러나 다음을 사용할 수 있습니다 sh -c.

$ ssh cshuser@localhost 'sh -c "( ls -d / nosuchfile ) & echo foo; wait"'   
foo
ls: nosuchfile: No such file or directory
/

bashIMHO, 어쨌든 이것이 최선의 선택입니다. 왜냐하면 &보다 더 많은 쉘이 있고 csh(예를 들어 fish) 그 중 어떤 것의 동작도 보장할 수 없기 때문입니다...

관련 정보