이 명령이 작동하지 않습니다.
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'"