web-dev-qa-db-ja.com

.bash_profileのエイリアスが正しく機能しない

ルートディレクトリにある.bash_profileを変更しようとしましたが、いくつかの問題が発生しています。 Macbook ProのOS X、ヨセミテを使用しています。私が理解しているように、.bash_profileファイルには、ターミナルアプリが開いてbashシェルが起動するたびに自動的に呼び出されるスクリプトが含まれています。これは私が現在そのファイルに書いたものです:

PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH

これは完璧に機能します。ただし、次のようにエイリアス(上記の2行の真下)を追加します。

alias test='cd ..'

しかし、これを保存してターミナルを起動すると、次のメッセージが表示されます。

-bash: alias: ..": not found

一重引用符を二重引用符で置き換えることは役に立ちませんし、完全に取り除くこともできません。ただし、奇妙なことに、次のエイリアスが機能します。

alias c=clear

端末にcと入力すると、予想どおり画面がクリアされます。ただし、代わりに次のようにbashプロファイルに引用符でこの行を入力した場合:

alias c='clear'

次に、ターミナルにcと入力すると、次のようになります。

-bash: 'clear': command not found

このエイリアスの起動時にエラーメッセージが表示されないことに注意してください。

何が悪いのですか?エイリアスを正しく機能させるためにどこかで変更する必要がある設定はありますか?私は以前のエイリアスの例を見てきましたが、それらは私にはうまくいきません。

12
Adrian M

ターミナルからログインするときに、シェルが.bash_profileにアクセスしていないようです。

.bash_profileはbashシェルの設定ファイルです。 bashシェルが起動すると、シェルは.bash_profileのコマンドを実行します。しかし、シェルには多くの種類があり、異なるシェルは異なる設定ファイルを実行します。

ターミナルはユーザー入力を受け取るソフトウェアであり、シェルはコマンドを実行します。cat /etc/Shellを使用して、受け入れ可能なシェルをリストできます。例えば:

$ cat /etc/shells
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

デフォルトのシェルはMac OXのbash Shellです。ただし、zshをインストールした場合、デフォルトのシェルはzshです。zshシェルの起動時に、シェルは.zshrcという名前のファイルを見つけ、.zshrcのコマンドを実行します。

echo $Shellを使用できますか?

$ echo $Shell
/bin/bash
-> echo $Shell
/bin/zsh

デフォルトのシェルがzshの場合、.bash_profileは逆に機能しません。 zshの設定ファイルは.zshrcです。そして、あなたの問題は、デフォルトのシェルがbashシェルではないことだと思います。たとえば、デフォルトのシェルがzshの場合、.zshrcを構成する必要があります。

PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH

または他の構成を~/.zshrcに設定します。

次にsource ~/.zshrcを実行すると、設定がすぐに機能します。

22
nodejh

私にとっては、同じ端末では機能しませんでした。私はそれを機能させるために新しいものを開かなければなりませんでした。

9

コマンドを二重引用符で囲むとうまくいきました。私はこのスレッドで言及されたあらゆる可能な方法で試してみましたが、どれもうまくいきませんでした。それから私は一重引用符を二重に置き換えました、そしてそれはうまくいきました。

    alias mysql_start="Sudo /path/to/server/mysql.server start"
8

私にとってのキラーは、スペースと一重引用符でした。エイリアスtest = "cd .."が機能しました。 alias_name =の間にスペースを入れないでください

4
user2012643

ユーザーレベルの「システム」ファイルには「プレーンテキスト」を含める必要があります。これを「選択の編集者」に設定/構成する方法はさまざまです(私はMacを使用していないので、あまり役に立ちません)。

  1. 直接行を追加して、「シェルから」プロファイルを作成します。つまり、「不良行を削除してから、次のようにします。

    エコー "いくつかのコマンド文字列" >>〜/ path/bash_profile

  2. 「vi」または「vim」を使用##は「安全」である必要があります

  3. 次の方法でファイルを確認します。

    cat -v〜/ path/bash_profle |詳細##「面白いキャラクター」をご覧ください。または
    cat -ve〜/ path/bash_profle |詳細##「面白いキャラクター」をご覧ください。または

または

vi ~/path/bash_profle # then set 'control codes' to 'on'
set list ## see any 'funny chars' for your 'quotes'?
2
Dale_Reagan

私が気づいたのは、Macにはスマートクォートとダッシュのオプションがあるということです。 alias ..='cd ../'alias ..=‘cd ../‘とは異なり、前者は機能しますが後者は機能しません。

1
Akshay Mahajan

エイリアスが認識しない場合は、まず、ターミナルまたはコマンドラインプロンプトecho $Shellを開いたときに使用しているシェルを特定します。私にとっては/ bin/bashなので、~/.bash_profileにエイリアスを入力します

ファイル〜/ .bash_profileには、ターミナルセッション中に呼び出す両方のエイリアスを格納し、ターミナルセッションを開いたときに同じエイリアスを自動実行できることに注意してください。以下の例では、ファイルを開いてテキストで編集しますvim-softwareを使用します。必要に応じて、他のtext-editorsを変更できます。違いはクロージャー方式でわかります。

エイリアスコールアウト(括弧を使用

  • エイリアスeditbp = "vim〜/ .bash_profile"

エイリアス自動実行(tildaを使用

  • エイリアスeditbp = `vim ~/.bash_profile`
0
fohrums

〜/ .bash_profileまたは〜/ .alias_file ...でエイリアスの自動自動起動を実行するには、bashを使用する場合は〜/ .bashrcに、zshを使用する場合は〜/ .zshrcにファイル名のエイリアスを貼り付けます。

例:

if [ -s ~/.bash_profile ]; then
    source ~/.bash_profile;
fi
0
Tran Quoc Vuong

エイリアスコマンドが.bash_profileにも含まれていることを確認してください。それが私の問題でした。

また、ターミナルにエイリアスを入力しただけの場合は、既知のエイリアスコマンドがすべて一覧表示されるため、コマンドが表示されない場合は、何か問題があることがわかります。

0
Ankit Agarwal

これを修正するには、vimまたはnanoで.bash_profileを編集して、編集したテキストについて何かを修正しました。理由は不明です。

「open .bash_profile」を使用してメモ帳で編集しようとしましたが、シンボルについて何かが正しく翻訳されていません。したがって、「vim .bash_profile」または「nano .bash_profile」のいずれかを使用する必要があります

これを行うと、この問題が修正されました。

0
user4974094