heredoc 없이는 원격 SSH 명령을 실행할 수 없습니다

heredoc 없이는 원격 SSH 명령을 실행할 수 없습니다

이 명령이 작동하지 않습니다.

user@server:~: ssh otherserver bash -ic 'source .profile; some-aliased-command'

내가 시도한 변형

user@server:~: ssh -t otherserver bash -ic 'source .profile; some-aliased-command'
user@server:~: ssh -t otherserver "bash -ic 'source .profile; some-aliased-command'"
user@server:~: ssh -t otherserver "bash -ic source .profile; some-aliased-command"
user@server:~: ssh otherserver bash -ic 'source .profile; some-aliased-command'
user@server:~: ssh otherserver "bash -ic 'source .profile; some-aliased-command'"
user@server:~: ssh otherserver "bash -ic source .profile; some-aliased-command"

일반적으로 다음과 같은 다양한 오류가 발생합니다.

bash: cannot set terminal process group (-1): Invalid argument
bash:  no job control in this shell
stdin: is not a tty
bash: some-aliased-command: command not found

하지만 실제로는 다음과 같이 작동합니다.

user@server:~: ssh otherserver bash -i << EOF
source .profile
some-aliased-command
EOF

실제로 이것을 실행하면 다음과 같습니다.

ssh -t otherserver 'bash -ic "source ~/.profile; alias"'

some-aliased-command내가 실행하려는 별칭을 포함하여 모든 별칭이 나열됩니다 .

작은따옴표, 큰따옴표, 이스케이프된 따옴표의 다양한 변형을 시도했지만 막혔습니다. heredoc 버전에서만 작동합니다.

heredoc 없이(한 줄의 코드로) 어떻게 작동하게 합니까?

답변1

이전 답변과 동일하지만 +m작업 제어 문제 수정이 추가되었습니다.

ssh otherserver "bash -ic +m 'source .profile; some-aliased-command'"

관련 정보