私のファイルでは、.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