.bash_profileとターミナルコマンドに関する問題

.bash_profileとターミナルコマンドに関する問題

.bash_profileRubyバージョン19と正しいgemの両方を実行しているエイリアスにいくつかのデータを追加しました。データを追加すると、次のコマンドを実行できなくなります。Macポート実行するコマンドポートまたはコマンドパートナーテキストコンパニオン。無効にした後、.bash_profileすべて.bash_login.bash_history正常に戻りました。.bash_history再作成され、すぐに.bash_profile必要なエイリアスが再取得されましたが、そのコマンドを再実行するオプションが失われました。以下は、これらすべてのファイルのいくつかの出力です。

jaspersmbp:~ jasper$ cat .bash_profile
    alias ruby='/opt/local/bin/ruby1.9'
    alias gem='/opt/local/bin/gem'
jaspersmbp:~ jasper$ cat .bash_login
jaspersmbp:~ jasper$ cat .bashrc
    HISTFILESIZE=1000000000
    HISTSIZE=1000000
jaspersmbp:~ jasper$ cat .profile
    #Django path
    export PATH=/opt/local/bin:opt/local/sbin:/opt/local/lib/python2.4/site-packages/django/bin:$PATH
    # Apache alias
    alias apacherestart='sudo /opt/local/apache2/bin/apachectl -k restart'
    #Subversion OSX for Eclips Joomla Development
    export PATH=/opt/subversion/bin:$PATH
    #Test
    #echo $PATH
    ##
    # Your previous /Users/jasper/.profile file was backed up as /Users/jasper/.profile.macports-saved_2012-05-18_at_09:47:58
    ##
    # MacPorts Installer addition on 2012-05-18_at_09:47:58: 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.

.bash_profile有効にすると、mateやportなどのコマンドが使用される理由を知っている人はいますか?.bash_profileエイリアスを使用するには、作業を行う必要があり、さまざまなソフトウェアで動作するMacPortsポートコマンドが必要です。

答え1

Bashは~/.bash_profile存在を読みます~/.profile。したがって、~/.bash_profileを作成すると、~/.profile使用されなくなります。他のシェルとは異なり、エイリアスは bash に限定されないので~/.profile

また、対話型ログインでbashを起動すると、bashは~/.bash_profile(bash関連のセッション起動スクリプト、または存在しない場合は通常のシェルセッション起動スクリプト)を読み込みますが(対話型bash起動スクリプト)は~/.profile読みません。~/.bashrcしたがって、次の2行をファイルに入れてすべてを~/.bash_profileロードする必要があります。

. ~/.profile
case $- in *i*) . ~/.bashrc;; esac

答え2

PATHMacPortが設定ファイルを作成して背中を操作しているようです。この問題を解決する最も簡単な方法は、自分で行うことです。 MacPortの作成/作成、削除、パス、.bash_profileおよびエイリアスに関連するドットファイルファイルを無効にしたら、次のファイルをファイルに追加.profileします。~/.bashrc

# define aliases
alias ruby='ruby1.9'
alias apacherestart='sudo apachectl -k restart'

# define hist properties
HISTFILESIZE=1000000000
HISTSIZE=1000000

# define path to programs
PATH=/opt/local/bin:opt/local/sbin:/opt/subversion/bin:/opt/local/apache2/bin/:/opt/local/lib/python2.4/site-packages/django/bin:$PATH

# define manpath
MANPATH=/opt/local/share/man:$MANPATH

# export env vars
export HISTFILESIZE HISTSIZE PATH MANPATH

新しい端末を起動して実行し、すべてがあることをecho $PATH確認してからインストールをテストします/opt/local/bin。上記のステートメントのすべてのディレクトリがPATH=現在ディレクトリにあるので、PATHバイナリへの絶対パスを持つエイリアスを使用する必要はありません。 、gem単に実行できるので、もうエイリアスは必要ありませんgem

アップデート:ソースがない場合は、きれいなソースを~/.bashrc入れてください。source ~/.bashrc~/.bash_profile

答え3

$PATHうーん、何か問題があるのではないか?戦後確認しましたか?

関連情報