![PATH에 $HOME/mydir이 포함되어 있는지 확인하고, 그렇지 않은 경우 추가하세요(모두 스크립트에 있음)](https://linux55.com/image/21080/PATH%EC%97%90%20%24HOME%2Fmydir%EC%9D%B4%20%ED%8F%AC%ED%95%A8%EB%90%98%EC%96%B4%20%EC%9E%88%EB%8A%94%EC%A7%80%20%ED%99%95%EC%9D%B8%ED%95%98%EA%B3%A0%2C%20%EA%B7%B8%EB%A0%87%EC%A7%80%20%EC%95%8A%EC%9D%80%20%EA%B2%BD%EC%9A%B0%20%EC%B6%94%EA%B0%80%ED%95%98%EC%84%B8%EC%9A%94(%EB%AA%A8%EB%91%90%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%20%EC%9E%88%EC%9D%8C).png)
중복 가능성:
소스의 $PATH에서 중복 항목 유지
내 스크립트 중 일부는 에 있습니다 $HOME/mydir
. 불행히도 해당 디렉토리가 PATH
.
$HOME/mydir
인지 확인하는 작은 스크립트를 만들고 싶습니다 PATH
. 그렇지 않은 경우 PATH
이를 사용하고 업데이트해야 합니다 EXPORTED
.
$HOME/mydir
내 질문은: 그것이 의 일부인지 확인하기 위해 어떤 명령을 사용할 수 있습니까 PATH
? 감사해요.
해결책
기록을 위해 다음을 수행했습니다.
echo "Before: $PATH"
echo $PATH | grep -q "$HOME/scripts"
if [ $? -eq 0 ]; then
PATH=$PATH:$HOME/scripts
export PATH
else
export PATH
fi
echo ""
echo "After: $PATH"
답변1
난 쓸수있다
case ":$PATH:" in
*:$HOME/mydir:*) echo it is in the path;;
*) echo not there ;;
esac
원하는 경로가 $PATH의 첫 번째 또는 마지막 경로인 경우 패턴 일치를 보장하기 위해 ":$PATH:"를 작성했습니다.
답변2
비슷한 작업을 수행하기 위해 간단한 bash 스크립트를 작성할 수 있습니다.
echo $PATH | grep -q "/your/search/path"
그런 다음 $?가 0이 아닌지 확인하여 일치하지 않음을 나타냅니다. 그렇다면 경로를 추가하세요.
export PATH=$PATH:/your/search/path