![.bash_profile에서 운영 체제를 확인하는 방법은 무엇입니까? [복사]](https://linux55.com/image/89844/.bash_profile%EC%97%90%EC%84%9C%20%EC%9A%B4%EC%98%81%20%EC%B2%B4%EC%A0%9C%EB%A5%BC%20%ED%99%95%EC%9D%B8%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
.bash_profile
내 호스트 MacBook Pro에는 Dreamhost Linux 시스템에서 변경 없이 사용하고 싶은 파일이 있습니다 . 그러나 다음과 같이 macOS에서만 작동하는 몇 가지 라인이 있습니다 alias mvim="/Applications/MacVim.app/Contents/MacOS/MacVim"
.
bash가 macOS 또는 Debian(또는 macOS가 아닌)에서 실행되는지 테스트하고 macOS에서 실행될 때 위의 줄과 몇 가지 다른 줄만 실행할 수 있는 방법이 있습니까? 여기에 있는 다른 질문에는 내가 사용 중인 Linux 배포판을 찾는 방법이 포함되어 있지만 여기서는 macOS에서 실행 중인지 Linux에서 실행 중인지만 알아야 하며 macOS에서 Linux 배포판을 알 수 있는 솔루션은 없습니다.
답변1
OSX에서는 uname -s
return을 수행합니다 Darwin
(대부분의 Linux uname
프로그램은 를 반환합니다 Linux
).
일반적으로(개인적인 사용은 제외) uname
다양한 시스템에는 고유한 특징이 있습니다. 에서는 일관된 정보를 제공하는 autoconf
스크립트가 사용됩니다 config.guess
.
예를 들어 내 Debian 7에서는
x86_64-pc-linux-gnu
OSX에서엘 캐피탄
x86_64-apple-darwin15.5.0
셸에서 if-then-else 문이나 Case 문을 사용할 수 있습니다. 후자는 유지 관리가 더 쉽습니다.
case $(config.guess) in
*linux*)
DoSomeLinuxStuff
;;
*apple-darwin*)
DoSomeMacStuff
;;
esac
많은 Linux 배포판은 의 출력에 정보를 추가 uname
하지만 이는 특정 상황에서만 유용합니다. 가지다아니요추가된 정보의 기준입니다.
내 데비안 7의 경우:
$ uname -v
#1 SMP Debian 3.2.81-1
OSX는 완전히 다릅니다.
$ uname -v
Darwin Kernel Version 15.5.0: Tue Apr 19 18:36:36 PDT 2016; root:xnu-3248.50.21~8/RELEASE_X86_64
추가 자료:
답변2
if [[ $(uname -s) == Linux ]]
then
doThis
else
doThat
fi
답변3
.bash_profile
대체 솔루션으로 휴대용 부분과 시스템별 부분 으로 분할해 볼 수 있습니다 .
기본에 .bash_profile
다음을 추가하십시오 .
if [ -f ~/.bash_profile_local ] ; then
. ~/.bash_profile_local
fi
그런 다음 특정 시스템에만 적용되는 사용자 정의 설정을 .bash_profile_local
해당 시스템에 배치합니다. 사용자 정의한 내용이 없으면 이 파일을 만들 필요가 없습니다.
또는 한 단계 더 나아가 일부 시스템 간에 특정 부분을 공유하고 다른 시스템에서는 공유하지 않으려는 경우 완전한 SYSV 스타일 rc.d 디렉터리를 만들 수 있습니다. 존재하다 .bash_profile
:
if [ -d ~/.bash_profile.d ] ; then
for f in ~/.bash_profile.d/* ; do
if [ -f "$f" ] ; then
. "$f"
fi
done
fi
그런 다음 디렉토리를 생성하면 .bash_profile.d
여기에 넣은 모든 파일이 .bash_profile
.