.profileでエイリアスを設定できないのはなぜですか?


11

私はこれを私の.profileの最後の行として持っています:

alias gl="cd /home/jrenner/glances/glances"

まだ再起動した後でも、glを入力するとコマンドが見つかりません。何が起こっている?正しいユーザーとしてログインしています。


どこに入力しますglか?ターミナル?GUI?
トーマスワード

1
なぜ誰もオリジナルに対処したことがないのですか?質問。.profile同じファイルの環境変数は機能しますが、で定義されたエイリアスが、テキストコンソールログイン、グラフィカル端末、またはその他のコンテキストで機能しないことを確認できます。
ダニエルマーラー

@DanielMahler、理由はありますか?
Maged Saeed

回答:


4

私はlpanebrのアイデアがうまくいくと確信していますが、これはよりエレガントな解決策です。そのようにエイリアスコマンド.bashrc を実行します。そうするか、エイリアス専用のファイルを追加したい人もいます。それを.alias何と呼んでも.aliasあなたに追加.bashrc

@lpanelbrのような書式設定ができるといいのですが。wikiはあるのかな?


1
フォーマットはaskubuntuがmarkdownを使用しています。詳細については、askubuntu.com / editing-helpをご覧ください。
saji89 2013年

1
なぜ.bashrc仕事中は.profileしないのですか?また、エイリアスファイルに名前を付けることを選択した理由.allias.alias何ですか?
トム

#1私が理解していることから、.bashrcはbashに固有であり、.profileは非bashコマンドラインに固有です。#2どういう意味かわかりません。結局綴れる。(編集)
Jason

7

.profileファイルに入力したときにエイリアスが機能しない場合がある理由は2つあります。1つ目は、.profile(または.bash_profile)ファイルはログインシェルに対してのみ実行されることです。Xのターミナルウィンドウでbashを起動している場合、ターミナルエミュレーター(たとえば、gnome-termanl)がログインシェルとしてbashを実行していない可能性があります。[ほとんどの場合、必要に応じてこれを変更するオプションがありますが、デフォルト(とにかくgnome-termalの場合)はログインシェルとして実行しません。]
シェルはインタラクティブシェルになるため.bashrc、実行されます。

ただし、通常、bashは、Xセッションの開始時にログインシェルとして実行されていました。したがって、エイリアスコマンドがある.profile場合は、PATHなどの環境変数の設定とともに実行されます。ターミナルウィンドウを開くと、bashの新しいインスタンスが実行されてプロンプトが表示され、そのターミナルウィンドウでコマンドが実行されます。環境変数とは異なり、bashの1つのインスタンスから、それによって開始された新しいインスタンスにエイリアスをエクスポートすることはできません。そのため、エイリアスは新しいシェルに渡されません。

これを確認するには、次の実験を試してください。

export ROBERT=bob
alias james=jimmy
echo $ROBERT
alias james
bash               #start a new bash instance
echo $ROBERT
alias james
exit               #end the new bash instance and revert to the original one
echo $ROBERT
alias james

.bashrcログインシェルとして起動した場合、bashによって実行されないことに注意してください。したがって、エイリアスが.bashrcから提供されない限り、エイリアスをそこに配置しても常に機能するとは限りません.profile。これは非常に一般的な方法です。


確認済み:追加するsource .bashrc.bash_profile、.bashrcに設定されたエイリアスが機能するようになりました。
Treefish Zhang

これが正解のようです。また、Ubuntuでは、エイリアスをに追加するだけ~/.bash_aliasesです。それが正しい方法です。(詳細については、.bashrcファイルをお読みください)。
エミリオM.

0

echo $SHELLシェルインタープリターとしてbash()を使用している場合、独自のCD関数を定義するのが最善(またはおそらく唯一の方法)だと思います。

.bashrcファイルを編集し、最後に以下を追加します。

# my custom functions:
function gl () {
   cd /home/jrenner/glances/glances/
}

次のように拡張することもできます。

# my custom functions:
function cdw () {
   cd /home/jrenner/glances/glances/$1
   ls
}

サブディレクトリに直接変更し、その内容をリストします。


1
これは良い提案かもしれませんaliasが、.profileファイルに配置されたディレクティブが失敗する理由を説明していないため、答えではありません。
トム


0

Ubuntuでこれを行う正しい方法は、エイリアスをに追加すること~/.bash_aliasesです。ファイルが存在しない場合は作成します。

このファイル(存在する場合)はデフォルトから呼び出され~/.bashrc、エイリアスはターミナルエミュレータでも使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.