동일한 Unix 또는 Linux 사용자에 대한 다양한 환경 변수 세트

동일한 Unix 또는 Linux 사용자에 대한 다양한 환경 변수 세트

저는 을 사용하고 tcsh있으며 특정 프로젝트의 경우 팀의 모든 구성원이 동일한 사용자를 사용하여 서버에 연결하고 있습니다. (이것은 우리가 변경할 수 없는 것입니다.)

.tcshrc_cust이는 해당 컴퓨터에 연결할 때 첫 번째 작업으로 로드하는 자체 .tcshrc 파일(예: )이 있는 일부 사용자 지정 환경 변수와 별칭을 원하기 때문에 발생합니다.

source .tcshrc_cust

비록 이것이 잘 작동하지만 그것을 사용할 때 문제가 발생합니다 vim. vim 내부에서 ( vim 사용) 쉘에 들어가면 :sh결국 사용자 정의 환경이 없는 일반 쉘이 됩니다. 변하기 쉬운. 그리고 별칭.

해당 컴퓨터에서 다른 사용자를 사용하는 것 외에 다른 솔루션이 있습니까?


솔루션(@Shawn 제공):

.ssh/authorized_keys내 키를 접두사로 추가합니다 .

command="setenv subuser noz; tcsh"

.tcshrc파일 끝에 다음 줄을 작성하십시오 .

if ($?subuser) then
    source .tcshrc_$subuser;
endif

이제 모든 것이 잘 작동합니다.

답변1

.tcshrc특수 환경 변수(예: subuser)를 확인하고 조건부로 이를 수행할 수 있습니다 source .tcshrc_cust. 로그인할 때 를 실행하면 subuser=nozimica tcsh해당 환경 변수를 가져오고 사용자 정의 rc 스크립트가 실행됩니다. 또한 vim :sh명령으로도 충분합니다. 더 멋지게 만들 수도 있고 source .tcshrc_$subuser그렇게 하면 누구나 할 수 있습니다.

subuser=nozimica tcshSSH를 통해 로그인 시 실행되는 부분을 건너뛸 수 있습니다. SSH 키 인증이 설정된 경우 ~/.ssh/authorized_keys서버에서 키 앞에 접두사를 추가하면 command="subuser=nozimica tcsh"SSH가 명령을 실행합니다.

답변2

SSH를 사용하여 로컬 컴퓨터에서 환경 변수를 보낼 수 있습니다.

예를 들어 ( version export FOO_USER="$USER"에서 ) 또는 (명령줄에서)을 로컬 컴퓨터에 입력합니다. 다음을 포함하도록 콘텐츠를 편집하세요 .tcsh.bash_profileFOO_USER=joe ssh remote-host~/.ssh/configSendEnv LANG LC_* FOO_USER

.bash_profile그런 다음 원격 서버에서 (또는 포함된 변수)를 검사 tcsh하고 적절한 조치를 취할 수 있습니다.

if [ "$FOO_USER" = 'joe' ]; then
    export PS1='--[ Joe rules ]-- \u@\h \w \$ ';
    source tcsh.joe;
elif [ "$FOO_USER" = 'jane' ]; then
    alias ll='ls -Al';
fi

기본적으로 SSH 서버는 허용만 하므로 LANG서버 에서 추가할 편집이 LC_*불가능한 경우 변수를 남용하여 해킹할 수 있습니다 (예: ) . 그에 따라 s(또는 해당 로컬 및 원격 파일)를 업데이트하십시오 ./etc/ssh/sshd_configAccceptEnv LANG LC_* FOO_USERLC_*LC_FOO_USER=joe.bash_profiletcsh

답변3

우리 팀과 저는 공유 계정과 관련해 비슷한 문제를 겪었습니다. 우리는 약간만 최적화했을 뿐 기본적으로 동일한 솔루션을 생각해냈습니다.

이것이 우리가 하는 일입니다. (우리는 를 사용하는데 ksh, 자세히는 모르지만 tcsh매우 비슷하다고 생각합니다).

  • .tcshrc거의 사용할 수 없을 정도로 최소한으로 제거했습니다 .

  • 모든 사용자가 사용하도록 강제.tcshrc_cust

그리고 원본 텍스트에 tcshrc다음과 같은 내용을 추가하세요 .

 alias u1='source .tcshrc_user1'
 alias u2='source .tcshrc_user2'
 alias u3='source .tcshrc_user3'

전체 명령보다 2글자만 입력하는 것이 더 편리하다는 생각입니다. 또한 팀 전체가 이를 수행하면 채택하기가 더 쉬워지고 유지 관리도 더 쉬워집니다.

나는 이것이 완벽한 해결책이라고 말하는 것이 아니며 나는 한동안 당신과 같은 것을 찾고 있었고 이것이 내가 생각해 낼 수 있는 최고의 해결책입니다. 다른 사람이 더 나은 아이디어를 갖기를 바랍니다 :)

관련 정보