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
/
bash
IMHO 어쨌든 이것이 최선의 선택입니다. 왜냐하면 & csh
(예: ) 보다 더 많은 쉘이 있고 그 fish
중 어떤 것이 어떻게 작동하는지 보장할 수 없기 때문입니다...