
この記事を投稿した後、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}')
上記は私が得たスニペットです。Linuxマガジンこれは「ほとんど動作」する必要がありますが、「動作する必要がある」コードは私には役に立たないようです。 「ほとんど動作する」コードを使用すると、次の結果が表示されます。
/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
。
1回以上必要ない場合があります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
おそらく、維持したい有用なコンテンツが含まれていることを確認することもできます。ただし、最後の行セットを除くと、現在のバージョンとほぼ同じになると予想されます。