VPS의 자동 완성 문제

VPS의 자동 완성 문제

방금 Hostinger.com을 통해 VPS를 설정했습니다. 운영체제는 우분투 18.04 입니다. Mike의 사용자 계정을 만들었습니다. 자동 완성 기능이 설치되지 않은 것 같다는 사실을 금방 깨닫고 이를 수행할 수 있는 방법을 찾아보았습니다. 어떤 이유로(쉘 유형?) 소스를 얻으려면 단어를 사용하는 대신 점을 사용해야 합니다 source.

Mike로 로그인하여 다음을 수행했습니다.

sudo apt-get install bash-completion

(나중에 시도한 문제를 해결하려고 노력 중입니다 sudo apt-get install --reinstall bash-completion.)

.../home/mike/.bashrc에 다음 줄을 추가했습니다.

. /etc/bash_completion

실제로 이 파일은 한 줄로 구성됩니다.

. /usr/share/bash-completion/bash_completion

현재 상황은 루트로 로그인하면 다음을 수행하여 자동 완성 기능을 얻을 수 있다는 것입니다.

$ . /home/mike/.bashrc

그러나 Mike로 로그인하면 동일한 명령이 다음과 같이 제공됩니다.

$ . /home/mike/.bashrc
-su: 26: /usr/share/bash-completion/bash_completion: Syntax error: "(" unexpected

답변을 검색하는 동안 별칭 충돌로 인해 문제가 발생한 것으로 추측됩니다. 그러나 이제 별칭 없이 mik으로 로그인하면 문제가 여전히 존재합니다.

저는 "-su: 26"이 실제로 무엇을 의미하는지 이해하려고 노력하고 있습니다. 이는 라인 참조인 것으로 보입니다. 그러나 파일의 라인 26은 실제로 비어 있습니다.

지금 내가 하고 싶은 일은 /usr/share/bash-completion/bash_completion을 찾아보고 내용이 이해가 될 때까지 줄을 주석 처리하는 것입니다. 하지만 그것은 큰 파일입니다!

분명히 흥미로운 측면 중 하나는 루트로 로그인하면 작동하지만 mike로 로그인하면 작동하지 않는다는 것입니다.

~ 후에
scpbash_completion 파일을 내 로컬 컴퓨터에서 VPS로 복사하고 기존 파일을 이 파일로 바꿨습니다(후자를 먼저 이름 바꾸기) . 다시 한 번 루트가 제대로 작동할 때 구매하세요. 마찬가지로 Mike로 로그인한 상태에서 구매하면 (여러 가지) 오류가 발생합니다.

$ . /home/mike/.bashrc
-su: 29: /usr/share/bash-completion/bash_completion: [[: not found
-su: 35: /usr/share/bash-completion/bash_completion: [[: not found
-su: 51: /usr/share/bash-completion/bash_completion: shopt: not found
-su: 57: /usr/share/bash-completion/bash_completion: complete: not found
-su: 62: /usr/share/bash-completion/bash_completion: complete: not found
[... more... ]

어떤 제안이 있으십니까? 어떤 이유로 Mike의 계정이 다른 쉘을 사용하고 있을 가능성이 있습니까? 다른 쉘 구문? 이런 내용은 어떻게 확인할 수 있나요?

답변1

(루트로 로그인하세요 :)

root@vps46990199:~# getent passwd mike
mike:x:1000:1000::/home/mike:/bin/sh
root@vps46990199:~# getent passwd root
root:x:0:0:root:/root:/bin/bash

...조금 검색해 보면 답을 알 수 있습니다.

root@vps46990199:~# usermod -s /bin/bash mike

...문제 해결됨(ender.qa 덕분에)

추가 정보
/bin/sh이리저리 읽어보면서 실제로 파일이 아니라 심볼릭 링크 라는 것을 먼저 확인했습니다 . 최신 버전의 우분투에 따르면예전에는(실행하기 전에 usermod) 링크를 다음과 같이 /bin/dash읽었습니다.

bash는 사실상의 표준(매우 널리 사용됨)이지만 "표준"은 아닙니다. Ubuntu의 sh는 Posix 호환 셸인 dash를 사용하므로 실제로는 표준입니다. 내 조언은 스크립팅, 특히 서버 측 스크립트에서 대시를 최대한 많이 사용하라는 것입니다. Bash가 표현력이 더 뛰어나지만 Dash가 더 빠르게 실행되고 더 안전합니다.(여기, Rick-777의 코멘트)

이로 인해 기본적으로 생성되는 사용자 계정과 같은 표준 계정 대신 Hostinger.com root계정이 사용되는 이유가 궁금합니다 . 내 급여 등급을 넘어.bashdash

관련 정보