次のことを行う Bash で見つからないハンドルを作成しようとしています。
- $1 が存在し、それがディレクトリの場合は、
cd
その中に。 - $1 がユーザー定義ディレクトリ内に存在する場合
$DEV_DIR
、`cd でそこに移動します。 - 前の条件が当てはまらない場合は、失敗します。
今、私はこのようなものを持っています:
export DEV_DIR=/Users/federico/programacion/
function command_not_found_handle () {
if [ -d $1 ]; then # the dir exists in '.'
cd $1
else
to=$DEV_DIR$1
if [ -d $to ]; then
cd $to
echo `pwd`
else
echo "${1}: command not found"
fi
fi
}
動作しているように見えますが (echo pwd
コマンドは予想されるディレクトリを出力します)、実際のシェルのディレクトリは変更されません。
.bashrc
これはシェル内の関数であるため、フォークせず、実行できるという印象を受けましたcd
が、明らかに機能していません。これを解決する方法についてのヒントをいただければ幸いです。