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
) 그 중 어떤 것의 동작도 보장할 수 없기 때문입니다...