bash でディレクトリ変数の展開を有効にする direxpand を設定する方法

Ubuntu 22.04 から、ターミナルでの変数を使ったディレクトリ移動が厄介になりました。

例を挙げます。

FSLのインストールパス は変数 $FSLDIR に入っています。私はこれまでは、$FSLDIR/standard にアクセスしたい場合

cd $FSLDIR までタイプしたら、その後、タブキーをタイプすると、シェルが自動で cd /usr/local/fsl と変数を展開してくれて、その後のディレクトリをタイプしていました。

しかし、Ubuntu 22.04 から、同じことをすると

1
cd \$FSLDIR/

と変数がエスケープされてしまい展開されなくなってしまいました。

これは不便です。

調べたところ、shopt というコマンドがあることを知りました。

覚えておくことは2つ。

  • shopt で設定できるオプションが表示できる
  • そのオプションを設定するときは、set の -s, 設定解除の時は unset の -u を指定する

です。

実際に shopt を実行してみます。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
shopt
 
autocd          off
assoc_expand_once   off
cdable_vars     off
cdspell         off
checkhash       off
checkjobs       off
checkwinsize    on
cmdhist         on
compat31        off
compat32        off
compat40        off
compat41        off
compat42        off
compat43        off
compat44        off
complete_fullquote  on
direxpand       on
dirspell        off
dotglob         off
execfail        off
expand_aliases  on
extdebug        off
extglob         on
extquote        on
failglob        off
force_fignore   on
globasciiranges on
globstar        off
gnu_errfmt      off
histappend      on
histreedit      off
histverify      off
hostcomplete    off
huponexit       off
inherit_errexit off
interactive_comments    on
lastpipe        off
lithist         off
localvar_inherit    off
localvar_unset  off
login_shell     off
mailwarn        off
no_empty_cmd_completion off
nocaseglob      off
nocasematch     off
nullglob        off
progcomp        on
progcomp_alias  off
promptvars      on
restricted_shell    off
shift_verbose   off
sourcepath      on
xpg_echo        off

このうち、2つ、direxpand と autocd が便利だったので紹介します。

direxpand

  • direxpand は私が求めていた「ディレクトリ変数を展開してくれる」機能です。以下で有効にできます
    1
    shopt -s direxpand

autocd

  • もうひとつ、autocd という機能も知りました。これは、ディレクトリだけタイプすると、自動でそこに cd してくれるものです。なかなか便利ですね。以下で有効にできます。

    1
    shopt -s autocd

  • この2つはとても便利なので、いつも使いたかったら、.bashrc なり .bash_aliases に記載しておけばOKです。私は .bashrc には触らないようにしているので、.bash_aliasesに以下の2行を記載しました。

1
2
shopt -s direxpand
shopt -s autocd

これでいつでも上記の2つの機能は有効となります。

地味だけれども生産性を向上させるオプションですね。

コメントを残す

This site uses Akismet to reduce spam. Learn how your comment data is processed.