bash 버전에 따라 shopt -s autocd에 대한 .bashrc 호출을 어떻게 만들 수 있나요?

bash 버전에 따라 shopt -s autocd에 대한 .bashrc 호출을 어떻게 만들 수 있나요?

우분투에서 나는 좋아한다

shopt -s autocd

.bashrc파일에서 "cd"를 입력하여 자동 CD를 생성합니다. 즉, 디렉터리 이름을 입력한 다음(탭 완성 기능도 사용할 수 있음) Enter 키를 누르고 해당 디렉터리가 있으면 cd를 누릅니다.

OSX에서는 이것이 내 시스템에서 작동하지 않습니다.bashrc

이것에 "의존"하려면 어떻게 해야 합니까? 그러면 두 운영 체제 간에 .bashrc를 공유하고 유지할 수 있습니까?

나는 파일에 대해 다음과 같은 작업을 수행할 수 있다는 것을 알고 있습니다.

if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

tmux와 같은 화면 종속 애플리케이션의 경우 할 수 있습니다

if [[ ! $TERM =~ screen ]]; then
  if [ -n "$(type -P tmux)" ]; then
    exec tmux
  fi  
fi

그런데 내가 이걸 할 수 있을까? 내가 할 수 있을까 shopt -s autocd?

답변1

autocd배쉬에 도입됨버전 4. 따라서 범용 크로스 플랫폼 솔루션은 다음과 같아야 합니다.

[ "${BASH_VERSINFO[0]}" -ge 4 ] && shopt -s autocd

${BASH_VERSINFO[0]}bash의 주요 버전입니다. 필요한 경우 부 버전을 사용할 수 있습니다 ${BASH_VERSINFO[1]}. man bash자세한 내용은 참고자료를 참조하십시오 BASH_VERSINFO.

답변2

그렇게 간단해요

shopt -s autocd 2>/dev/null

값을 변경하지 않고 옵션을 사용할 수 있는지 확인하려면 또는 shopt없이 호출하세요 .-s-u

if shopt autocd >/dev/null 2>/dev/null; then …

답변3

쉬운 방법은 운영 체제 이름을 확인하고 그에 따라 조치하는 것입니다. unameOSX에서 무엇이 반환될지는 모르겠지만 아마도 다를 것입니다. 따라서 다음을 수행할 수 있습니다.

 [[ $(uname) = Linux ]] &&  shopt -s autocd

즉, 이 작업을 꼭 수행해야 합니까? OSX는 기본적으로 로그인 셸을 실행하며 이를 얻기 위해 ~/.bashrc수정하지 않는 한 ~/.profile무시됩니다 . 따라서 그 안에 뭔가가 있으면 ~/.bashrc어쨌든 Linux에서만 실행됩니다.

관련 정보