質問編集履歴

1 ディレクトリ名修正

g104robo

g104robo score 4

2017/09/06 09:47  投稿

【dotfiles管理】.configのリンクを貼るのに失敗しています
###前提・実現したいこと
githubを使ってdotfilesを管理しようとしています。
###発生している問題・エラーメッセージ
dotfilesのリンクを貼るシェルスクリプトを書いたり、コマンドから実行したりしたのですが、一部、意図したように動作しません。
ln -snfv ~/dotfiles/.vimrc ~/.vimrc
のようにして、dotfilesディレクトリ内にあるdotfileをhomeへリンクさせようとしています。ここで.vimrcのようなファイルや.vimなどのディレクトリに対してはリンクを生成することに成功しているのですが、.configに関してリンクを生成しようとすると以下のようにリンクされてしまいます。
```
'/home/tombo/.config/.config' -> '/home/tombo/dotfiles/.config'
'/home/username/.config/.config' -> '/home/username/dotfiles/.config'
```
本来であれば
'/home/tombo/.config/' -> '/home/tombo/dotfiles/.config'
'/home/username/.config/' -> '/home/username/dotfiles/.config'
のようにリンクを生成して欲しいのですが、何故か1階層下の.configへのリンクを作成してしまいます。
###該当のソースコード
```bash
 1 #!/bin/bash                                                                                                                                             
 2
 3 set -u
 4 DOT_DIRECTORY="${HOME}/dotfiles"
 5
 6 cd ${DOT_DIRECTORY}
 7
 8 for f in .??*
 9 do
10    #無視したいファイルやディレクトリ
11    [ "$f" = ".git" ] && continue
12
13    ln -snfv ${DOT_DIRECTORY}/${f} ${HOME}/${f}
14    #echo "${DOT_DIRECTORY}/"${f}" :   ${HOME}/"${f}""
15
16 done
17
18 echo "linked dotfiles complete!"
```
###試したこと
シェルスクリプトからだけでなく、コマンドから
$ ln -snfv ~/dotfiles/.config/ ~/.config/
を実行しましたが、同様の結果になってしまいます。
原因がわかる方がいらっしゃいましたら、教えていただけるとありがたいです。
###補足情報(言語/FW/ツール等のバージョンなど)
OS: ubuntu16.04LTS
lnのバージョン:
ln (GNU coreutils) 8.25
Copyright (C) 2016 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
作者 Mike Parker および David MacKenzie。
  • bash

    873 questions

    bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る