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

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

例を挙げます。

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

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

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

cd \$FSLDIR/

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

これは不便です。

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

覚えておくことは2つ。

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

です。

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

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

autocd

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

    shopt -s autocd
    

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

shopt -s direxpand
shopt -s autocd

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

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

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください