.bashrcが再ロードされるまで、cd&&ls機能は他のエイリアスで機能しませんか?

.bashrcが再ロードされるまで、cd&&ls機能は他のエイリアスで機能しませんか?

私のコードは次のとおりです.bashrc

c() { cd "$@" && ls -a ; }
alias cdd="c ~/Downloads"
alias r=". ~/.bashrc"

新しい端末をロードすると、cddコマンドを実行するまで機能しませんr。しかし、そうした後、私は期待通りに働いた。なぜこれですか?

私は尋ねた同じ質問数ヶ月前にStack Overflowにいましたが、1回の回答でも正常に動作するソリューションを提供できませんでした。私のドットファイルへのリンクは次のとおりです。それが何の役に立つなら。

編集する type -a c cdd r生産する:

c is aliased to `clear'
c is a function
c () 
{ 
    cd "$@" && ls --color=auto -a
}
cdd is aliased to `c ~/Downloads'
r is aliased to `. ~/.bashrc'

この情報に基づいてc機能を変更してd機能します。しかし、私は(すでにしたように)Clear関数をcにマップしない方法はありますかalias cs='printf "\033c"'?周りを見回しましたが、.bashrc「Clear」という単語を含むアイテムが見つかりませんでした。

ベストアンサー1

cエイリアスでclearあるが独自のシェル初期化ファイルではない場合は、以下のシステム全体の初期化ファイルで実行される可能性が高くなります/etc。たとえば、どのファイルが使用されているかを確認してください/etc/bash.bashrc(またはマニュアルを参照してください。これはビルド方法bashによってシステムによって異なる場合があります)。bash

cエイリアスを指定するたびに、関数として定義する前にエイリアスを解放clearできます。c

unalias c

$HOME代わりに使用を検討することもできます~。これは$HOMEより説明的であり(エイリアスの一部であり、実際に入力する必要がないため、何も「失われない」)、変数として機能するためです。実は~そうではありません。バラより二重引用符の中でチルダ(〜)が拡張されないのはなぜですか?

おすすめ記事