
次の位置に変数が設定されています.bashrc
。
export SOME_DIR=/path/to/some/dir
ls
入力するとls $SOME_DIR[tab]
変数が拡張され、ファイルシステムを掘り下げるときにタブオートコンプリートを使用できるようになりました。しかし、試してみるとcd $SOME_DIR[tab]
何もcd $SOME_DIR/[tab]
起こりません。
なぜこれだけが適用されますかls
?と連携させることは可能ですかcd
?に
追加しようとしましたが、効果はありません。shopt -s direxpand
.bashrc
答え1
明らかにshopt -s direxpand
それは組み込みを除いて動作しますcd
。だから私は自分のプロフィールに追加し、TABを使用するのと同じ方法alias xy=cd
で動作しますxy
。 (誰がこんなに簡単だと思いましたか?)cd
direxpand
答え2
Cygwinでは、シェル変数を引用符で囲む必要があるのと同じ問題がありました。たとえば、cd $ccc
拡張されませんが、拡張され、カーソルcd "$ccc"
はまだ正しい引用符の前にあります。
答え3
ディレクトリがない可能性がありますか/path/to/some/dir/
?cd $SOME_DIR/[tab]
私はシステムを試してみましたが、うまくいきます。
答え4
(以前)bash 4.2.37ではほぼ同じ問題がありましたが、bash 4.3または4.4ではそうではありませんでした。
つまり、拡張機能は動作しますがls
動作しませんcd
。
しかし、セカンダリキーバインディングとして次のように定義しました(eSファン):
Ctrl-s私
~/.inputrc
:
Control-s: shell-expand-line
これにより、次のように入力できます。cd $SOME_DIR
次に変数を次に展開しますCtrl。s
cd /path/to/some/dir
同様に便利なキーバインディングは次のとおりです。Gドロップボール):
Ctrl-g私のもの
~/.inputrc
:
Control-g: glob-expand-word
これにより、入力してls b*
拡張できCtrlます。gb*
$ ls b*<kbd>Ctrl</kbd>-<kbd>s</kbd>
$ ls bash.html_node.tar.gz bash.pdf
これにより、コマンドラインを編集し、必要に応じて要素を追加または削除できます。