シェル変数がパスに使用されている場合でも、Tabを使用してファイル名を拡張するにはどうすればよいですか?

シェル変数がパスに使用されている場合でも、Tabを使用してファイル名を拡張するにはどうすればよいですか?

私のファイルでは、.bash_profileいくつかの共通ディレクトリへのアクセスを単純化するために短い変数を設定しました。たとえば、

lh=/var/log/httpd
hc=/etc/httpd/conf

だから私はこれを次のように使います:

$ cd $lh
$ less $lh/access_log

ただし、タブキーを使用して(変数参照を含むパラメータで)ファイル名をオートコンプリートする場合は、bashはオートコンプリートを実行しますが、\変数名のドル記号の前にバックスラッシュを挿入します。

たとえば、入力しless $lh/acc てTabキーを押すと次のように展開されますless \$lh/access_log

もちろん私が望むのはless $lh/access_log またはですless /var/log/httpd/access_log。 (奇妙なことにcd、この場合、autocompleteコマンドの使用はまったく機能しません。質問すでに議論されている)

shell-expand-line代わりに(主キー:Ctrl++ Alt)を使用できることを知っていますが、Eエイリアスも拡張し、特殊文字(スペース、...)でパスを引用しないため、完璧とは異なります。

シェル変数がパスに使用されている場合でも、bashでファイル名をタブ拡張する方法はありますか?

答え1

問題は、direxpandシェルオプションが設定されていないことです。以下は問題を解決します。

shopt -s direxpand

関連情報