LoginSignup
2

More than 5 years have passed since last update.

Bashで~${user}を展開する

Posted at

やりたい事と問題

bashでは、~hogeで、指定したユーザーのホームディレクトリのパスに展開することとが可能だが、ユーザー名の部分を変数にすると動作しない。チルダ展開が行われないみたい。

$ user=hoge
$ ls -l ~${user}
ls: '~hoge' にアクセスできません: そのようなファイルやディレクトリはありません

解決策

bashに展開させることで、対応は可能。ただ、見た目も悪く長いので、他に良い方法があるといいなぁ。変数や特殊文字を展開コマンドがあればできそうだけど、わからなかった。

$ udir=$(bash -c "echo ~${user}")
$ ls -l ${udir}

なお、zshでは、変数を含むチルダ展開(~${user})も使用可能である様子。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2