제가 일반적으로 사용하는 쉘은 zsh
입니다. ls
및 grep
와 같은 일부 프로그램에서 색상을 활성화하는 여러 별칭이 있습니다. 또한 비표준 위치 (예 : ~/bin/
)에서 프로그램을 실행할 수 있도록 사용자 지정 경로를 설정했습니다.
나는 root 's Shell 을 zsh
로 바꾸지 않을 것입니다. 그러나이 설정을 공유하여 루트도 가질 수 있도록하고 싶습니다. zsh
이 (가) /etc/profile
을 (를) 소싱하지 않음을 확인했습니다. /etc/zsh/zprofile
에서 소스를 얻을 수 있지만 다른 "적절한"방법을 원합니다.
/etc/commonprofile
파일을 만들고 /etc/profile
및 /etc/zsh/zprofile
모두에서 소싱합니다. 이렇게하면 공통 설정을 공유하고 각각 bash
zsh
특정 설정 및 구문을 /etc/profile
에서 각각 zprofile
사용할 수 있습니다.
Zsh에는 POSIX sh 코드와 일부 bash 확장을 실행할 수있는 sh 호환 모드가 있습니다. zsh에없는 (동일한 구문으로) bash 기능을 사용하지 않는 한, 두 쉘에서 동일한 파일을 사용할 수 있습니다. emulate
내장 기능을 사용하여 zsh를 호환 모드로 전환하십시오. -L
옵션을 사용하면 에뮬레이션이 포함 함수에 로컬입니다 (포함 소스 스크립트가 아님).
source_sh () {
emulate -LR sh
. "[email protected]"
}
환경 변수와 같은 경우 source_sh /etc/profile
에서 /etc/zprofile
를 사용하고 source_sh ~/.profile
에서 ~/.zprofile
를 사용할 수 있습니다. 프로필 파일은 bash 전용을 사용하지 않을 것입니다. 풍모.
별칭 및 함수 정의와 같은 항목의 경우 Shell rc 파일에 공유 할 수없는 많은 항목 (프롬 트, 키 바인딩, 완료 설정 등)이 포함될 가능성이 있으므로 ~/.sh_aliases
와 같은 파일을 사용하십시오. 출처는 ~/.bashrc
이고 source_sh
는 ~/.zshrc
입니다.
간단한 심볼릭 링크는 어떻습니까?
ln -s /etc/profile /etc/zsh/zprofile
조건부 초기화가 필요한 경우 다음과 같이 추가 할 수도 있습니다.
#Determine our Shell without using $Shell, which may lie
Shell="sh"
if test -f /proc/mounts; then
case $(/bin/ls -l /proc/$$/exe) in
*bash) Shell=bash ;;
*dash) Shell=dash ;;
*ash) Shell=ash ;;
*ksh) Shell=ksh ;;
*zsh) Shell=zsh ;;
esac
fi
변수에 관해서는 모듈 및 모듈 파일 [1]이 누락되었다는 인상을 받았습니다. 이 작업을 시작하면 단일 모듈 파일의 편리함으로 다양한 셸 (bash 및 zsh 포함), python, Perl 및 더 많은 환경에 대한 공통 프로파일을 쉽게 만들 수 있습니다.
같은 방식으로 별칭을 정의 할 수도 있습니다. 그러나 별칭은 연속적인 셸간에 잘 상속되지 않으며 해결 방법이 필요할 수 있습니다.
[1] http://en.wikipedia.org/wiki/Environment_Modules_ (소프트웨어)