Bash コマンドが Mac で動作しない

Bash コマンドが Mac で動作しない

こんにちは。Ruby を 1.9.3 にアップデートしようとしているので、Mac OS 10.6.8 でターミナル ウィンドウを開くと、ターミナルを開くとすぐに次の応答が表示されます。

-bash: export: /Library/Frameworks/Python.framework/Versions/Current/bin': not a valid identifier 
-bash: export:/Library/Frameworks/Python.framework/Versions/2.7/bin': not a valid identifier
-bash: export: /Library/Frameworks/Python.framework/Versions/Current/bin': not a valid identifier 
-bash: export:/Library/Frameworks/Python.framework/Versions/Current/bin': not a valid identifier 
-bash: export: /usr/bin': not a valid identifier 
-bash: export:/bin': not a valid identifier 
-bash: export: /usr/sbin': not a valid identifier 
-bash: export:/sbin': not a valid identifier 
-bash: export: /usr/local/bin': not a valid identifier 
-bash: export:/usr/local/git/bin': not a valid identifier 
-bash: export: /usr/X11/bin': not a valid identifier 
-bash: export:/Users/oskarniburski/.rvm/bin': not a valid identifier 
-bash: export: /usr/X11R6/bin': not a valid identifier 
-bash: export:/Library/Frameworks/Python.framework/Versions/Current/bin': not a valid identifier 
-bash: export: /Library/Frameworks/Python.framework/Versions/2.7/bin': not a valid identifier 
-bash: export:/Library/Frameworks/Python.framework/Versions/Current/bin': not a valid identifier 
-bash: export: /Library/Frameworks/Python.framework/Versions/Current/bin': not a valid identifier 
-bash: export:/usr/bin': not a valid identifier 
-bash: export: /bin': not a valid identifier 
-bash: export:/usr/sbin': not a valid identifier 
-bash: export: /sbin': not a valid identifier 
-bash: export:/usr/local/bin': not a valid identifier 
-bash: export: /usr/local/git/bin': not a valid identifier 
-bash: export:/usr/X11/bin': not a valid identifier 
-bash: export: /Users/oskarniburski/.rvm/bin': not a valid identifier 
-bash: export:/usr/X11R6/bin': not a valid identifier

パスを変更しようとしましたが、うまくいきませんでした。この問題にどう対処したらよいか分からず、たくさんのフォーラムを読んでいます。何かアイデアはありますか?

bash_profile は次のとおりです。

$ /bin/cat ~/.bash_profile

# Setting PATH for MacPython 2.5
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/Current/bin:${PATH}"
export PATH

# Setting PATH for MacPython 2.5
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/Current/bin:${PATH}"
export PATH

# Setting PATH for Python 2.7
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH

# Setting PATH for EPD_free-7.3-2
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/Current/bin:${PATH}"
export PATH

# Setting PATH for Python 3.3
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.3/bin:${PATH}"
export PATH

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
export PATH=/usr/local/bin:/Library/Frameworks/Python.framework/Versions/3.3/bin /Library/Frameworks/Python.framework/Versions/Current/bin /Library/Frameworks/Python.framework/Versions/2.7/bin /Library/Frameworks/Python.framework/Versions/Current/bin /Library/Frameworks/Python.framework/Versions/Current/bin /usr/bin /bin /usr/sbin /sbin /usr/local/bin /usr/local/git/bin /usr/X11/bin /Users/oskarniburski/.rvm/bin /usr/X11R6/bin
export PATH=/usr/local/bin:/Library/Frameworks/Python.framework/Versions/3.3/bin /Library/Frameworks/Python.framework/Versions/Current/bin /Library/Frameworks/Python.framework/Versions/2.7/bin /Library/Frameworks/Python.framework/Versions/Current/bin /Library/Frameworks/Python.framework/Versions/Current/bin /usr/bin /bin /usr/sbin /sbin /usr/local/bin /usr/local/git/bin /usr/X11/bin /Users/oskarniburski/.rvm/bin /usr/X11R6/bin

##
# Your previous /Users/oskarniburski/.bash_profile file was backed up as /Users/oskarniburski/.bash_profile.macports-saved_2013-09-26_at_17:32:30
##

# MacPorts Installer addition on 2013-09-26_at_17:32:30: adding an appropriate PATH variable for use with MacPorts.
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
# Finished adapting your PATH environment variable for use with MacPorts.

答え1

さて、ここでの主な問題は、ディレクトリ エントリを区切るスペースがあり$PATH、引用符で囲まれていない変数にこれらのスペースがあり、混乱していたことですbash

この場合、パスにディレクトリを追加したいと考えていました。正しい構文は ですPATH="/foo:/bar/baz:$PATH。 を$PATH末尾に追加すると、その現在の値が変数の末尾に追加され、既存の値が上書きされなくなります。 のディレクトリは$PATH順番に読み取られるため、新しいディレクトリを最後に検索したい場合は、 を先頭に追加しますPATH="$PATH:/foo:/bar"

もう一つの問題は、重複したパスがたくさんあることです。これを見つけるには、次のコマンドを実行します。

$ echo $PATH | perl -pne 's/:/\n/g' | sort | uniq -d
/bin
/Library/Frameworks/Python.framework/Versions/2.7/bin
/Library/Frameworks/Python.framework/Versions/3.3/bin
/Library/Frameworks/Python.framework/Versions/Current/bin
/sbin
/usr/bin
/usr/local/bin
/usr/sbin

最後に、複数回エクスポートしていました$PATHが、これは無意味です。重複をすべて削除し、構文を修正した結果、次のようになりました。

# Setting PATH for MacPython 2.5
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/Current/bin:${PATH}"

# Setting PATH for Python 2.7
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"

# Setting PATH for Python 3.3
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.3/bin:${PATH}"

# Load RVM into a shell session *as a function*
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 
PATH="/usr/local/git/bin:/usr/X11/bin:/Users/oskarniburski/.rvm/bin:/usr/X11R6/bin:$PATH"

##
# Your previous /Users/oskarniburski/.bash_profile file was backed up 
# as /Users/oskarniburski/.bash_profile.macports-saved_2013-09-26_at_17:32:30
##

# MacPorts Installer addition on 2013-09-26_at_17:32:30: adding an appropriate PATH 
# variable for use with MacPorts.
export PATH="/opt/local/bin:/opt/local/sbin:$PATH"

# Finished adapting your PATH environment variable for use with MacPorts.

そのファイルをコピーし、ターミナルを開いて次のコマンドを実行します。

/bin/cp ~/.bash_profile ~/bash_profile.bad
/bin/cat > ~/.bash_profile

最初のコマンドは、現在のバックアップを作成します~/.bash_profile(念のため)。2 番目のコマンドは何も実行しないように見えますが、書き込み用に開かれます~/.bash_profile。上記のコマンドをターミナルに直接貼り付けて、 を押しますEnterCtrlCこれですべてが正常に戻ります。

注: では、、およびを/bin指定/sbin/usr/binていました。これらはほぼ間違いなく既に に含まれているため、追加する必要はありません。これらが欠落している場合 (現在の値を確認するには )、上記の構文を使用して追加するだけです。/usr/local/bin.bash_profile$PATHecho $PATH

関連情報