방금 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로 로그인하면 작동하지 않는다는 것입니다.
~ 후에scp
bash_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
계정이 사용되는 이유가 궁금합니다 . 내 급여 등급을 넘어.bash
dash