私はこれを私の.profileの最後の行として持っています:
alias gl="cd /home/jrenner/glances/glances"
まだリブートした後でもglを入力するとコマンドが見つかりません。何が起こっている?正しいユーザーとしてログインしています。
Lpanebrのアイデアはうまくいくと確信していますが、ここではよりエレガントなソリューションを紹介します。 .bashrc
でそのエイリアスコマンドを実行します。そうするか、エイリアス専用のファイルを追加することを好む人もいます。 .alias
または何でも呼び出して、.alias
を.bashrc
に追加します
@lpanelbrのような書式設定ができるといいのですが。ウィキはあるのでしょうか?
.profile
ファイルに入れたときにエイリアスが常に機能しない理由は2つあります。 1つ目は、.profile
(または.bash_profile
)ファイルがログインシェルに対してのみ実行されることです。 Xの下のターミナルウィンドウでbashを起動している場合、ターミナルエミュレーター(たとえばgnome-termanl)はおそらくログインシェルとしてbashを実行していません。 [必要に応じてこれを変更するオプションがほとんどありますが、デフォルト(gnome-termalの場合)はログインシェルとして実行しないことです。]
シェルはインタラクティブなシェルになるため、.bashrc
が実行されます。
ただし、通常、bashはXセッションの開始時にログインシェルとして実行されています。 .profile
にエイリアスコマンドがある場合、それらはPATHなどの環境変数の設定とともに実行されます。ターミナルウィンドウが開くと、bashの新しいインスタンスが実行され、プロンプトが表示され、そのターミナルでコマンドが実行されます。窓。環境変数とは異なり、エイリアスはbashの1つのインスタンスから、bashによって開始された新しいインスタンスにエクスポートできません。そのため、エイリアスは新しいシェルに渡されません。
これを確認するには、次の実験を試してください。
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
から供給されない限り、エイリアスをそこに配置しても常に機能するとは限りません。これは非常に一般的な方法です。
シェルインタープリターとしてbash(echo $Shell
)を使用している場合、独自のCD関数を定義するのが最善(または唯一の方法)だと思います。
.bashrc
ファイルを編集し、最後に次を追加します。
# my custom functions:
function gl () {
cd /home/jrenner/glances/glances/
}
次のように拡張することもできます。
# my custom functions:
function cdw () {
cd /home/jrenner/glances/glances/$1
ls
}
サブディレクトリに直接変更し、その内容をリストします。
$ bash #start a new bash instance
これは私のサーバーの問題でした。シンプルsource .profile
は何らかの理由で機能しませんでした