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つの機能は有効となります。
地味だけれども生産性を向上させるオプションですね。