neofetch
OpenSSH를 통해 원격 서버에 로그인할 때마다 (배너를 표시하는 작은 유틸리티)를 시작 하고 싶습니다 . 그래서 /usr/bin/neofetch
방금 파일에 추가했는데 ~/.ssh/rc
제대로 작동합니다. 문제는 서버에 갈 때에도 ~/.ssh/rc
구문 분석된다는 것입니다. scp
전체 scp
명령은 잘 작동하지만 자동 완성 기능을 사용하려고 할 때 문제가 발생합니다. scp
입력하면 <Tab><Tab>
원격 서버에서 사용 가능한 파일/폴더가 표시됩니다. 예를 들면 다음과 같습니다.
$ scp remote-host:/t <TAB><TAB>
\\\ \\\ \\\ \\\ \\\ \\\ \\\ \\\ \\\ \\\ \\\ \\\ \\\ \\\ \\\`\\\"\\\"\\\"\\\
\\\ \\\$\\\$\\\:\\\ \\\ \\\ \\\ \\\ \\\ \\\$\\\$.\\\ \\\ \\\ ^[\\\[0m^[\\\[31m^[\\\[1m-^[\\\[0m^[\\\[1m\\\ \\\ \\\ \\\ \\\,d\\\$\\\$\\\'\\\
\\\ \\\ \\\ \\\ \\\ \\\`\\\$\\\$b.\\\
\\\ \\\,\\\$\\\$P\\\'\\\ \\\ \\\ \\\ \\\ \\\ \\\ \\\ \\\ \\\ \\\ \\\ \\\ \\\ \\\`\\\$\\\$\\\$.\\\
\\\ \\\$\\\$P\\\ \\\ \\\ \\\ \\\ \\\ d\\\$\\\'\\\ \\\ \\\ \\\ \\\ ^[\\\[0m^[\\\[31m^[\\\[1m\\\,^[\\\[0m^[\\\[1m\\\ \\\ \\\ \\\ \\\$\\\$P\\\
\\\'\\\,\\\$\\\$P\\\ \\\ \\\ \\\ \\\ \\\ \\\ \\\,ggs.\\\ \\\ \\\ \\\ \\\ \\\`\\\$\\\$b\\\:\\\
\\\ \\\$\\\$\\\;\\\ \\\ \\\ \\\ \\\ \\\ Y\\\$b._\\\ \\\ \\\ _\\\,d\\\$P\\\'\\\
^[\\\[0m^[\\\[1m\\\ \\\`\\\$\\\$b\\\ \\\ \\\ \\\ \\\ \\\ ^[\\\[0m^[\\\[31m^[\\\[1m\\\"-.__\\\
^[\\\[0m^[\\\[1m\\\ \\\ \\\`Y\\\$\\\$\\\
(...)
일반적으로 (예를 들어)로 시작하는 파일/폴더를 표시 $ scp remote-host:/t <TAB><TAB>
하지만 이제는 배너를 표시합니다./t
/tmp
neofetch
구별할 수 있는 방법이 있나요 $ ssh
(서버에 들어갈 때만 시작되고, 서버에 들어갈 때는 시작되지 않음 $ scp
)?~/.ssh/rc
neofetch
ssh
scp
참고: 나는 bash를 시작할 때마다 neofetch를 시작하고 싶지 않으며 로그인 쉘을 시작할 때마다 neofetch를 시작하고 싶지도 않으므로 이를 넣거나 /etc/bash.bashrc
빼는 /etc/profile
것은 옵션이 아닙니다. SSH 연결 후에 시작하고 싶습니다.
나는 몇 가지 조사를 하고 몇 가지를 시도했습니다.
에서 영감을 받다이 게시물, 나는 다음을 시도했습니다.
if [ -t 0 ]; then /usr/bin/neofetch; fi
그리고
if tty > /dev/null; then /usr/bin/neofetch; fi
하지만 작동하지 않습니다(
neofetch
한 번도 시작하지 않았으며 이후에도 시작하지 않음$ ssh
).고무하다그 포스팅을 통해서
$-
, 또한 대화형 세션과 비대화형 세션을 구별하기 위해 환경 변수를 사용해 보았지만~/.ssh/rc
bash가 아닌 대시로 구문 분석했기 때문에 작동하지 않았습니다(그리고$-
bash 변수였습니다).
그러나 나는 작동하는 해결책을 찾았습니다(음, 일종의...). 탁월한이 글을 통해:
서버에
~/.ssh/rc
다음을 입력합니다.if [ ! "$LC_SCP" = "yes" ]; then /usr/bin/neofetch; fi
클라이언트에서는
LC_SCP
다음과 같이 환경 변수를 설정 해야 합니다$ scp
.
$ export LC_SCP=yes
$ scp -o SendEnv=LC_SCP remote-host:/t<TAB><TAB>
(works, doesn't launch neofetch)
작동하지만 번거롭습니다. 및 의 세션을 ssh
구별 하는 더 좋은 방법이 없습니까 ?scp
~/.ssh/rc
답변1
환경변수는 ing시 SSH_TTY
에만 설정되고 ing시에는 설정되지 않는 것 같습니다. 따라서 다음이면 충분합니다(적어도 내 테스트에서는).ssh
scp
if [ -n "$SSH_TTY" ]; then /usr/bin/neofetch; fi
(가치가 무엇인지는 출력을 보고 추측했습니다 env | grep -i ssh
.)