내 문제: 내 웹 호스트가 공유 서버에 SSH를 제공합니다. 몇 가지 별칭 등을 설정하고 싶기 때문에 로그인 스크립트를 실행하려고 합니다. 내 쉘이 일반 bash라면 도트 파일 중 하나에 내용을 추가하고 작업을 완료할 것입니다.
/bin/sh
이제 내 쉘은 bash에 연결되는 로 지정됩니다 .
sh-3.2$ /bin/sh --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
sh-3.2$ /bin/bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
sh-3.2$
평소 용의자 ,,,,,,를 모두 만들어 보았 ~/.bash_profile
으나 ~/.bash_login
운이 없었습니다.~/.bashrc
~/.profile
.login
시작 시 명령을 실행하려면 어떻게 해야 합니까? 시도하지 못한 파일 이름이 있습니까?~해야 한다내 조건에서 이것이 작동합니까? 즉, 내 호스트가 로그인 스크립트를 비활성화하는 작업을 수행했나요?
사실을 파악할 때까지 호스트에게 다른 쉘을 설정하도록 요청하고 싶지 않습니다.
답변1
~에서배쉬 매뉴얼부분6.2 Bash 시작 파일:
이름 sh로 전화
Bash가 name 으로 호출되면
sh
posix 표준을 준수하면서 sh 역사적 버전의 시작 동작을 최대한 비슷하게 모방하려고 합니다.이 옵션을 사용하여 대화형 로그인 셸 또는 비대화형 셸로 호출되면 먼저 명령을 순차적으로
--login
읽고 실행하려고 시도합니다 . 이 옵션을 사용하면 이 동작을 억제할 수 있습니다. 라는 대화형 셸을 호출하면 Bash는 변수를 찾고 해당 값이 정의되어 있으면 확장한 다음 확장된 값을 읽고 실행할 파일 이름으로 사용합니다. as를 호출하는 쉘은 다른 시작 파일에서 명령을 읽고 실행하려고 시도하지 않으므로 이 옵션은 효과가 없습니다. 이 이름으로 호출된 비대화형 쉘은 다른 시작 파일을 읽으려고 시도하지 않습니다./etc/profile
~/.profile
--noprofile
sh
ENV
sh
--rcfile
sh
답변2
chsh를 실행하여 쉘을 /bin/bash로 변경할 수 있습니다.
chsh -s /bin/bash
/bin/sh로 호출된 bash는 로그인 시 ~/.profile을 실행해야 합니다.