문제는 비 대화식 쉘에서 별명을 실행하려고한다는 것입니다. 당신이 실행하면 ssh user@computer command
, command
비 대화 형으로 실행됩니다.
비 대화식 쉘은 별명을 읽지 않습니다 (man bash에서).
expand_aliases 쉘 옵션이 shopt를 사용하여 설정되지 않는 한 쉘이 대화식이 아닌 경우 별명은 확장되지 않습니다 (아래 SHELL BUILTIN COMMANDS에서 shopt에 대한 설명 참조).
최종 bash
명령이 대화식 쉘을 시작하여 별명을 사용할 수 있으므로 수동으로 다시 실행하면 작동 합니다.
대안으로, 원격 시스템에서 bash -i
간단한 로그인 쉘 ( bash -l
) 대신 대화식 쉘 ( ) 을 실행하여 별명을 실행할 수 있습니다.
ssh user@remote_computer -t 'bash -ic "my_alias;bash"'
그러나 이것은 매우 복잡한 접근법입니다. 왜 정확히해야하는지 설명하지 않았지만 다음 대안을 고려하십시오.
원격 시스템에서 일반 로그인 대화식 쉘을 시작하고 명령을 수동으로 실행하십시오.
user@local $ ssh user@remote
user@remote $ my_alias
이 컴퓨터에 연결할 때 항상 해당 별칭을 실행 하려면 원격 컴퓨터 의 ~/.profile
(또는있는 ~/.bash_profile
경우)를 편집 하고 끝에이 줄을 추가하십시오.
my_alias
때문에 ~/.profile
로그인 쉘이 시작될 때마다 읽을 수 있습니다 (그래서, 당신을 통해 연결할 때마다 ssh
예를 들어이), 그 원인이됩니다 my_alias
당신이 연결할 때마다 실행되도록.
기본적으로 로그인 쉘은 읽 ~/.profile
거나 ~/.bash_profile
무시 ~/.bashrc
합니다. Ubuntu와 같은 일부 배포판 (예 : 데비안 및 그 파생어 및 아치) 배포판에는 기본 ~/.profile
또는 ~/.bash_profile
파일 소스가 ~/.bashrc
있으며, 이는 정의 된 별칭 ~/.bashrc
이 로그인 쉘에서도 사용 가능 하다는 것을 의미합니다 . 모든 배포판에 해당되는 것은 아니므로 ~/.profile
소스를 갖도록 수동으로 편집해야 할 수도 있습니다 ~/.bashrc
. 또한 ~/.bash_profile
존재 하는 경우 ~/.profile
bash에서 무시됩니다.