왜 이런 일이 발생합니까?
MacOS와 Ubuntu는 bash의 명령 기록에서 중복을 처리하도록 기본적으로 다르게 구성됩니다. 이러한 구성은 소위 " 도트 파일 "에 저장됩니다. 시스템 전체의 / etc / profile뿐만 아니라 ~ / .bash *의 형식을 사용합니다. 이러한 모든 파일은 원하는대로 사용자 정의 할 수 있으며 대화식 쉘, 로그인 쉘, 원격 쉘 등을 구별 할 수 있습니다 .이 파일은 특정 순서 로 읽히고 특정 기능을 수행합니다.
macOS에서 동일한 동작을 얻는 방법은 무엇입니까?
"명령 줄의 정확한 복제본 무시"에 대한 단일 사용자 정의를 원한다면 Allan의 대답과 같은 방법으로 갈 수 있습니다. 예를 들어 bash_profile 파일에 단일 단일 행을 추가하십시오. "적절한 방법"은 없지만 수많은 옵션이 있습니다.
경우이 bash는 다음이에 대한 유일한 정의하지 않습니다 수 없는 최선의 선택이 될 :
다른 참고 사항 :
- 그래픽 응용 프로그램 또는 sh (또는 sh로 호출 된 bash)에 사용할 수있는 것은 ~ / .profile에 있어야합니다.
- ~ / .bashrc는 아무것도 출력하지 않아야합니다.
- 로그인 쉘에만 사용할 수있는 것은 ~ / .profile에 있어야합니다.
- ~ / .bash_login이 존재하지 않는지 확인하십시오.
일을 더 복잡 얻을 때 즉,이다 좋은 생각 하기 에 퍼져 여러 파일에 사용자 정의한 내용을, 그들 각각의 전문 매우 그 내용에 정렬 :
exports
단순화 된 감독을 위해 모두 자신의 파일에 상주 할 수 있습니다.
bash가 사용자 디렉토리의 루트에있는 파일을 작성하십시오 (예 .exports
: 다음을 포함).
# Omit duplicates and commands that begin with a space from history.
export HISTCONTROL='ignoreboth';
대화식 시작시 bash가 파일을 읽을 수 있도록 "소스"가되어야합니다.
파일 소싱
쉘 구성이 많은 경우, 여러 개의 서브 파일로 분할하고 소스 내장을 사용하여 .bashrc에서로드하여 추가 source ~/.exports
할 수 있습니다.
또는로드하기 전에 파일이 실제로 존재하는지 확인
if [ -f ~/.exports ]; then
. ~/.exports
fi
명령 . ~/.exports
은 ~/.exports
현재 실행중인 쉘의 컨텍스트에서 소스 됩니다.
별명을 추가 할 때 특히 유용합니다. 별도의 파일을 사용하면 변경시 별명을 쉽게 다시로드 할 수 있습니다.
zsh
로 사용자 정의 하는 것이 가능하고 일반적 입니다.