![별칭을 볼 수 없음](https://linux55.com/image/24372/%EB%B3%84%EC%B9%AD%EC%9D%84%20%EB%B3%BC%20%EC%88%98%20%EC%97%86%EC%9D%8C.png)
내 루트 사용자와 다른 사용자 testuser가 있습니다. 이제 testuser의 .bashrc에는 ls -a에 대한 la와 같은 몇 가지 별칭이 있습니다. 하지만 testuser에 로그인하여 la를 실행하려고 하면 다음 오류가 발생합니다. -sh: la: not find
$HOME을 찾아봐도 권한이 거부되었습니다(?)
이로 인해 작업 속도가 느려집니다! 돕다!
답변1
셸의 메시지는 로 시작합니다 -sh
. 이는 두 가지 중요한 단서를 제공합니다.
- 선행은
-
이것이 로그인 쉘임을 나타냅니다. 관례적으로 로그인 프로그램(사용자 이름과 비밀번호를 입력하는 프로그램,login
gdm, sshd 등)은 extra-
.~/.profile
세션 시작 파일을 읽습니다 . - 쉘의 이름은 입니다
sh
. 따라서 사용자의 로그인 쉘은 bash/bin/sh
가 아닌 bash로 설정됩니다. bash에 대한 심볼릭 링크 이거나/bin/sh
dash와 같은 다른 셸입니다. bash가 name으로 호출되면sh
호환성 이유로 구성 파일을 읽지 않고 표준 파일만 읽습니다(로그인 쉘에서는~/.profile
비/etc/profile
로그인 쉘에서는 파일을 읽지 않습니다). 그래서 그것은 어느 쪽이든~/.bashrc
읽히지 않을 것입니다 .
bash를 명시적으로 호출하면 .bashrc
명령을 지정했더라도 -t
터미널을 열도록 플래그를 전달해야 합니다.ssh
ssh -t testuser@nameofhost bash
대신 사용자의 로그인 쉘을 bash로 전환하고 싶을 수도 있습니다 /bin/sh
.testuser
chsh -s /bin/bash
/usr/local/bin/bash
bash가 있는 곳으로 경로를 변경합니다. 인수 없이 호출 하면 chsh
선택할 수 있는 쉘을 보여주는 메뉴가 표시됩니다.
답변2
시스템 전체의 /etc/bashrc 및/또는 /etc/profile 파일을 확인할 수 있습니다. 파일에 다음과 같은 내용을 추가할 수도 있습니다.
if [ `whoami` == "testuser" ]
then
alias x='echo x' # alias list..
fi