VSCode에서 로컬 코드 명령과 RemoteSSH에서 코드 명령을 공존하는 방법

무슨 말을 하는 거야?



제목이 무엇을 말하고 있는지 모르겠다고 생각하기 때문에, 우선은 환경의 설명.

저는 집의 머신(macOS)을 모리모리스펙으로 하고 집에서는 그 머신을, 외출처에서는 노파소로부터 RemoteSSH를 사용해 작업을 하고 있습니다.
작업 환경을 이어받거나 외출처에서 컴파일해도 배터리 소비하지 않아도 되는 등 이점이 여러가지 있습니다.


그리고 VSCode에는 code라는 CLI에서 VSCode를 여는 명령이 있습니다만, 이것이 실은 2종류 존재합니다.


path
설명


로컬 code 명령( /usr/local/bin/code )
로컬 환경에서 사용하기 위한 code 명령. 많은 사람들이 이것을 사용해야합니다

RemoteSSH 시 code 명령( ~/.vscode-server/bin/<hash>/bin/code )
리모트 접속시에 사용하기 위한 code 커멘드. RemoteSSH시에 사용함으로써 클라이언트 PC의 VSCode에서 작업 공간을 열어준다. (htps : // 여기.ゔぃすあ lsつぢお。 코 m / 드 cs / 레모테 / sh # _ 오 펜 g - 아 r 모두 l - 온 - 아레 모테 - 호 st)



무엇이 잘못되었나요?



에서 무엇이 문제인가 하면, 로컬의 code 커멘드를 인스톨 해 버리면, /user/local/bin/ 부하에 인스톨 되기 (위해)때문에 앨리어스(alias)를 덧쓰기됩니다.
그러면 RemoteSSH로 연결 중에 code 명령을 실행해도 로컬 code 명령이 실행되어 버려 클라이언트로 하고 있는 노파소의 VSCode에는 아무것도 표시되지 않습니다.

RemoteSSH는 서버 (예 : 워크 스테이션)의 작업 공간을 직접 편집하는 것이 일반적인 사용법이라고 생각합니다.
하지만 제 경우에는 데스크톱 컴퓨터이므로 원격 환경이 로컬 환경이 될 수있는 조금 복잡한 환경입니다.

데스크톱 PC를 직접 사용할 때는 ローカルのcodeコマンド를, RemoteSSH 할 때는 リモート用のcodeコマンド
라는 것이 이번 문제입니다.

해결책



로컬에서 사용 code 명령을 제거하고 .zshrc 또는 .bashrc 등에 다음 코드를 추가하기 만하면됩니다.
# codeコマンドがRemote SSHと競合しないように、`/usr/local/bin/`にはインストールせず、環境分岐させる
if [ -z "$VSCODE_IPC_HOOK_CLI" ]; then
  # ※macOSの場合↓↓↓
  alias code='/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/code'
fi
/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin/code는 로컬에서 실행되는 코드 명령의 원본입니다.

RemoteSSH시에 사용되는 환경 변수 $VSCODE_IPC_HOOK_CLI가 존재하지 않는 경우, 즉 로컬로 실행할 때는, 어플리케이션내에 있는 code 커멘드를 직접 실행합니다.

이렇게 하면 /user/local/bin/ 에 code 명령을 넣을 필요가 없어져 별칭을 덮어쓰지 않게 됩니다.

끝



실로 틈새 요망이라고 생각합니다만, 비망록으로서 남겨 둡니다.

다음은 iTerm 같은 터미널에서 code 명령 사용하고 싶다. 옛날부터 Github등에서 논의되고 있지만, 좋은 방법이 발견되지 않고…

좋은 웹페이지 즐겨찾기