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 してくれるものです。なかなか便利ですね。以下で有効にできます。
1shopt
-s autocd
-
この2つはとても便利なので、いつも使いたかったら、.bashrc なり .bash_aliases に記載しておけばOKです。私は .bashrc には触らないようにしているので、.bash_aliasesに以下の2行を記載しました。
1 2 | shopt -s direxpand shopt -s autocd |
これでいつでも上記の2つの機能は有効となります。
地味だけれども生産性を向上させるオプションですね。