回答:
何を尋ねているのかは完全にはわかりませんが、エイリアスはエイリアスに展開されます。エイリアスが2つある場合は、エイリアスを含めて異なるコマンドを追加できます。
alias "foo=cd /path/to/foo; go"
alias "foo2=cd /path/to/foo2; go"
それ以外の状況では、関数を指定できます .bashrc
function go ()
{
if [ "$PWD" == "/path/to/foo" ]; then
cmd1
elif [ "$PWD" == "/path/to/go" ]; then
cmd2
fi;
}
より多くの選択肢がある場合は、ケース構造を使用することをお勧めします。
あなたは非常に「ディレクトリ指向」であると感じます。その場合、これはあなたのメンタリティをより良くするかもしれません。
(しかし、正直に言うと、これは完全に悪い考えだと思います。コマンドをグローバルにしたいと思います。)
で.bashrc、alias go="./.cmd"(次にsource ~/.bashrc)を入力します。
次に、そのような各ディレクトリに、というスクリプトを配置して.cmdからchmod +x .cmd、をgo実行します。
touch .TESTNO; echo 2 > .TESTNO各ディレクトリにファイル()を置き、関数内でそのファイルを探し、.TESTNOファイルのテスト番号に従って分岐することができます。含まれています。まったく難しくはありませんが、おそらくこれにエイリアスを使用することはできません。関数を使用する必要があります。
私はまさにそれを達成するプロジェクトに取り組んでいます。確認してください:localalias。
デモは次のとおりです。
面白いことに、実際にgoデモの例として使用しました。切り替えディレクトリ(デモについて変更する必要があるもの)は表示しませんでしたが、laコマンドを使用する関数は、定義されているディレクトリに対してローカルです。
次の関数を.bashrcに追加する場合
function cd () {
builtin cd "$@" && [[ -f .aliases ]] && . .aliases
return 0
}
.aliasesファイルがあるディレクトリにcdするたびに、ソースが取得されます。
他のユーザーがマシン上にファイルを作成できる場合は、セキュリティに注意してください。
このトリックでは、エイリアスは削除されませんが、関数に好きなだけコードを書くことができます。
ondirはこのトリックを使用し、たくさんの機能を備えています。
.bashrc。(cronたとえば、これは機能しません)。