`ssh username@server` 로그인에서 제공하는 쉘입니까, ~/.profile을 실행합니까, 아니면 ~/.bashrc를 실행합니까? [폐쇄]

`ssh username@server` 로그인에서 제공하는 쉘입니까, ~/.profile을 실행합니까, 아니면 ~/.bashrc를 실행합니까? [폐쇄]

~에서배쉬 매뉴얼

원격 쉘 데몬에 의해 호출됨

Bash는 원격 셸 데몬(일반적으로 rshd) 또는 보안 셸 데몬 sshd에 의해 실행되는 경우와 같이 네트워크 연결에 연결된 표준 입력을 사용하여 실행 중인지 확인하려고 시도합니다. Bash가 이런 방식으로 실행 중이라고 판단하면 ~/.bashrc파일이 존재하고 읽을 수 있으면 명령을 읽고 실행합니다 . sh로 호출하면 이 작업이 수행되지 않습니다. 이 --norc옵션을 사용하면 이 동작을 억제할 수 있고, --rcfile다른 파일을 강제로 읽는 데 사용할 수 있습니다. 그러나 rshd나 sshd는 일반적으로 이러한 옵션을 사용하여 셸을 호출하거나 지정을 허용하지 않습니다.

쉘은 로그인 또는 비로그인을 통해 ssh username@server제공 됩니까?

로그인 쉘이라면 bash 매뉴얼에 따라 from 명령을 실행하는 ~/.profile대신 from 명령을 실행하면 어떨까요?~/.bashrc

감사해요.

내 OS는 Ubuntu 16.04이지만 bash 매뉴얼은 OS와 관련이 없습니다.

답변1

SSH는 다음에서 언급한 대로 로그인 셸을 시작합니다.맨페이지:

만약주문하다지정되면 로그인 쉘이 아닌 원격 호스트에서 실행됩니다.

Bash에서 이를 확인할 수 있습니다.

shopt login_shell

로그인 쉘로 실행 중인지 여부가 표시됩니다.

Bash는 인용한 섹션에 설명된 대로 로그인 셸이든 다른 방식이든 원격으로 시작할 때 작동합니다. 당신이 비교하는 행동은대화형 쉘, 원격 쉘은 .bashrc대화형 로그인 쉘 동작 위에 처리를 추가합니다.

Ubuntu 시스템에는 일반적으로 .bash_profile우선 순위가 높은 스크립트가 있으며 일반적 으로 소스 코드도 .profile있습니다 ..bash_profile.bashrc

관련 정보