이 글을 게시한 후 Stack Overflow에서 여기로 이동했습니다.하나의 질문PyExifTool을 작동시키려는 시도에 대해. 그러나 문제는 다면적인 것으로 보이며 초보자로서 여기에서 도움을 구하라는 말을 들었습니다.
본질적으로 문제는 내가 달리라는 말을 들었을 때 깨달았습니다 ...
bash:~ $ type -all exiftool
반품...
exiftool is /usr/local/bin/exiftool
exiftool is /usr/local/bin/exiftool
...어딘가에 중복된 것이 있다는 것을 알았습니다.
그러다가 달려갔어...
bash:~ $ echo $PATH
어떤 반환 ...
/Library/Frameworks/Python.framework/Versions/3.8/bin:/usr/local/fsl/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin~/.bash_profile
...중복 항목이 포함되어 있으며 다음으로 끝나서는 안 됩니다..bash_profile
이제 터미널에서 다음을 사용하여 청소할 수 있습니다.
bash:~ $ PATH=$(echo $PATH | awk -v RS=: -v ORS=: '!($0 in a) {a[$0]; print}')
위는 내가 얻은 스 니펫입니다.리눅스 매거진이것은 "거의 작동"해야 하지만 "작동해야 하는" 코드는 나에게 도움이 되지 않는 것 같습니다. "거의 작동하는" 코드를 사용하면 다음과 같은 결과가 나타납니다.
/Library/Frameworks/Python.framework/Versions/3.8/bin:/usr/local/fsl/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin~/.bash_profile :
나는 완전한 초보자이지만 끝나서는 안 된다고 생각하며 여전히 존재하는 :
것 같습니다 .bash_profile
. 그러나 새 터미널 창을 열면 재설정되기는 하지만 중복 항목을 제거하는 것처럼 보이므로 이는 해결 방법일 뿐입니다.
내 bash 구성 파일은 다음과 같습니다.
export PATH=/usr/local/bin:$PATH~/.bash_profile
# Setting PATH for Python 3.6
# The original version is saved in .bash_profile.pysave
#PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin:${PATH}"
#export PATH
# Setting PATH for Python 2.7
# The original version is saved in .bash_profile.pysave
#PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
#export PATH
# FSL Setup
FSLDIR=/usr/local/fsl
PATH=${FSLDIR}/bin:${PATH}
export FSLDIR PATH
. ${FSLDIR}/etc/fslconf/fsl.sh
# Setting PATH for Python 3.8
# The original version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.8/bin:${PATH}"
export PATH
이것이 관련이 있는지 확실하지 않지만 Hotbar에서 Python을 시작하고 실행하면...
>>> print(os.environ['PATH'])
그것은 인쇄한다
/usr/bin:/bin:/usr/sbin:/sbin
그리고 이를 사용하여 bash 터미널에서 실행하면 IDLE3
다음이 반환됩니다.
/Library/Frameworks/Python.framework/Versions/3.8/bin:/usr/local/fsl/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin~/.bash_profile
주변 정보 및 실험:
제 생각엔 FSL을 설치할 때 뭔가를 망쳤을 수도 있는데 .bash_profile
, 지금은 기본 코딩 기술을 배우고 개발하려고 할 때 막혀 있습니다. 어쩌면 이것은 수동 오류일 수도 있고, 홈브류나 Xcode와 관련된 것일 수도 있습니다.
결말을 삭제할 수도 있지만 .bash_profile
, 이미 충분히 피해를 입혔기 때문에 인터넷 포럼에서 건드릴 의향이 없을 정도로 힘든 문제를 직접 해결하고 싶지는 않습니다.
이는 다음 사항에 따라야 합니다.Linux Magazine의 Mitch Frazier. 분명히 이것은 그에 대한 반성이나 이 글의 반성이 아니라 오히려 나의 제한된 이해에 대한 반성이다.
bash:~ $ export PATH=/Library/Frameworks/Python.framework/Versions/3.8/bin:/usr/local/fsl/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin~/.bash_profile
bash:~ $ echo -n $PATH | awk -v RS=: '!($0 in a) {a[$0]; printf("%s%s", length(a) > 1 ? ":" : "", $0)}'
이것이 돌아온다...
/Library/Frameworks/Python.framework/Versions/3.8/bin:/usr/local/fsl/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin~/.bash_profileUser's-MBP:~ username$
나는 또한 다음을 시도했습니다.페파 65)...
bash:~ $ PATH=$(n= IFS=':'; for e in $PATH; do [[ :$n == *:$e:* ]] || n+=$e:; done; echo "${n:0: -1}")
이것이 돌아온다...
-bash: -1: substring expression < 0
echo $PATH
다음을 사용하여 변경 사항을 찾으려고 할 때
빈 줄이 나타납니다.
나는 이것이 지적으로 자극적이지 않을 것이라는 것을 알고 있으므로 도움을 주시면 감사하겠습니다.
편집 1:
.bash_profile
첫 번째 줄의 끝 부분을 제거하려는 순진한 시도로 인해 변경되지 않은 채 출력에서 해당 줄이 사라지지 않았습니다 .bash_profile
.echo $PATH
답변1
이는 단순화되고 수정되었으며 .bash_profile
귀하의 구성에 적합하기를 바랍니다.
~/.bash_profile
원래 올바른 줄에 잘못 추가된 문제가 있는 줄이 처음에 있습니다 . 그러나 예상하고 진단 결과 시스템 제공 기본 디렉터리에 이미 있는 디렉터리가 추가된 것으로 나타났기 때문에 전체 줄을 제거했습니다 PATH
.
한 번 이상 필요하지 않을 수도 있습니다 export PATH
. 남은 인스턴스 하나를 안전하게 삭제할 수도 있습니다. export
변수를 표시하여 다음과 같이 표시하는 것을 의미합니다 .환경하위 프로세스에 표시되는 변수입니다. 이 작업이 완료되면 값이 에 있더라도 하위 프로세스는 변수의 현재 값에 액세스할 수 있습니다 export
. 시스템 전체 쉘 구성이 이미 PATH
변수에 대해 이 작업을 수행하고 있을 가능성이 높습니다(그렇지 않으면 예상대로 작동하지 않습니다).
주석 처리된 부분을 모두 제거했습니다. 물론 해당 부분을 다시 가져와서 주석 처리를 취소할 수도 있습니다.
# FSL Setup
FSLDIR=/usr/local/fsl
PATH=${FSLDIR}/bin:${PATH}
export FSLDIR PATH
. ${FSLDIR}/etc/fslconf/fsl.sh
# Setting PATH for Python 3.8
# The original version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.8/bin:${PATH}"
이 파일은 새 셸을 시작할 때 읽혀지지만 정확한 시기는 운영 체제 공급업체가 Bash를 구성한 방식에 따라 달라집니다. 이전 구성이 더 이상 현재 구성을 방해하지 않도록 하려면 다시 시작하기 위해 로그아웃했다가 다시 로그인해야 하는지 또는 간단히 새 셸이나 새 터미널 세션을 시작하여 다시 시작할 수 있는지 여부를 결정해야 합니다. 재시작.
.bash_profile.pysave
아마도 유지하고 싶은 유용한 내용이 포함되어 있는지 확인할 수도 있습니다 . 하지만 마지막 줄 세트를 제외하면 현재 버전과 거의 동일할 것으로 예상됩니다.