質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • Linux

    3900questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • MacOS(OSX)

    1962questions

    MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

シンボリックリンクはどういった時に使いますか?(辞書的な意味では把握してますが、使う場面がわかりません)

受付中

回答 13

投稿

  • 評価
  • クリップ 3
  • VIEW 1,581

cDm_48

score 164


シンボリックリンクという言葉はこれまで幾度か聞いたことがありますが、
これがどういう場面で使われるのか未だに理解ができません。

辞書的な意味をはじめ、ネットで概要については調べました。

その中での私の認識では、
「すでにあるファイルに別名をつけて、 その名前で参照できるようにするモノ」
だと思っております。

ファイルのバックアップみたいな用途で使うのかなと思ったのですが、
どういう場面d
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 13

+5

いろいろなケースがあると思います。
1.1つの物に別名を付けたい
viと言うエディタには、ex view rvi rview といった別名があり、どの名前で呼び出されたかによって動作が異なります。

2.差し替え可能なものを常に同じ名前で呼びたい
メールサーバーソフト(SMTPソフト)には、sendmail postfix qmailなど複数あって、どれか一つを使います。どれを使う場合でも、/bin/mail や /usr/lib/sendmail といった名前で使うことが出来ます。
何らかの理由で別のSMTPソフトに切り替えた場合でも、使う側は修正不要です。
あるいは、バージョン番号を含んだファイルを、バージョン無しの名前で利用して、バージョンが変わったらリンク先を変えるなど。

3.同じ物を複数のディレクトリに置きたい
カレントディレクトリにある物は、コマンドラインからの指定が楽です。よく使うディレクトリやファイルへのシンボリックリンクを、作業用のディレクトリに置いておくと楽。
Windowsのデスクトップに、いろいろな物のショートカットを置くのもこれと同じですね。

まだ他にもあると思いますが、これくらいで。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+3

実行命令を実行するプログラムがあるとします。
/foo/bar/program

実際のモジュールはバージョン名付で次に格納されています。
/foo/bar/pg/program-v1
/foo/bar/pg/program-v2
/foo/bar/pg/program-v3

シンボリックリンクをこうします。
/foo/bar/program -> /foo/bar/pg/program-v3

リリースはファイルを配置してシンボリックリンクを変えればOK!

みたいな感じでもつかえますよ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

まっとうな用法ではありませんが、「シンボリックリンク攻撃」というような攻撃手法も存在します。

悪意のあるユーザーが、/etc/passwdのような重要なファイルを指すシンボリックリンクを仕掛けておいて、ターゲットとなるプログラムが普通のファイルを開くつもりでそのシンボリックリンクを開いてしまい、悪意のあるユーザーの権限ではなくプログラム自体の権限で当該のファイルにアクセスできてしまう、というような手法です。

IPAのセキュアプログラミング講座より

他の回答にもありますように、もちろんシンボリックリンクは有用な機能ですが、裏返しでこんな危険性があることを知っておいても、損はないでしょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

ログだけ別のパーティションに置きたいときとかに使うことがあります。

たとえばインストーラが /usr/local/product01/ みたいなディレクトリ配下に
bin, log, .. を作ったとして、log ディレクトリだけ別のとこに変えたい
というようなケースです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

■ショートカットとしての利用
~/access.log --> /var/log/apache/access.log
みたいに深い階層にあるファイルへのショートカットとして使ってみたり。

■複数バージョンの共存のため
例えば、

・/opt/local/hoge_1.0.0
・/opt/local/hoge_1.5.0
・/opt/local/hoge_2.0.0

という同じアプリケーションの複数のバージョンがインストールされている場合、
/opt/local/hoge --> /opt/local/hoge_2.0.0
としておけば、過去のバージョンを残しつつ、最新バージョンを利用することが可能、といった使い方をします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

新しいプログラムをインストールしたけど要求するライブラリのバージョンが違うので起動できない・・・上位or新しいライブラリはあるんだけど・・・時に要求されたライブラリと同じ名前で上位バージョンにリンクを張るとかしますね。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

実態のファイルは長くて面倒な場所+名前であるけどそれを忘れてしまいそうなんでよく分かるところに別名でとっておきたい時です。viとかCUIで開くとき便利です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

どなたも触れられていないので…
太古の昔、if test -e /hoge then...と記述していたものを、if [ -e /hoge ] thenと記述できるようになりました。が、この仕組み(ハードリンク)は同じiノードを別の名前でアクセスできるようにしたため、パーティションをまたぐことができませんでした。

そこで賢者が考えたのがシンボリックリンクです。名前に対して、実態のパスを記述する。

最近見かけるに、/etc/httpdをServerRootに設定し、/etc/httpd/logs->/var/log/httpd(正確ではない)の様な設定をしたディストリビューションがあります。

このように、ディレクトリ参照もあれば、1つのプログラムがプログラムの名前で、動きを変えるケース、前にも書いた[がtestといった、別の名前を取るケース。

様々です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

ディスク装置を増設してデータをそっちに移動して,パスの設定を変更するのが面倒くさかったのでシンボリックリンクを元あった所に作りました.

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

Windowsでの例ですが、直近で実際にしたのは、
 C:\WINDOWS\SoftwareDistribution\Download
を、
 D:\Download
にしました。Cドライブの空きがなくなり、WindowsUpdateのダウンロードファイルをDドライブを使用するようにしました。
TEMPや仮想メモリファイルや、Temporary Internet Filesなど、環境変数やレジストリ等で場所を変えれる物はできるのですが、場所を指定する設定が存在しないとか、%SystemRoot%からの相対パスの場所などを変更するのに有用です。
Linux/Unixでも、/home/hoge/Log を /tmp/Log にしたりと領域またがりは可能だと思います。

あと、一般的な使い方としては、Tomcat上のJavaのWEBアプリだとして、
WEB-INF/src/config.properties という設定ファイルを /WEB-INF/classes/config.properties
にリンクする(ソースファイル側の設定ファイルと、実行側オブジェクトの設定ファイルを同一にする)などです。
EclipseでBuildすると、上記例はコピーしてくれますが、BATやshellで自分でコンパイルするなどの場合は同一目的の設定ファイルの乱立を防ぐことができるかと。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

うーん・・・シンボリックリンクをサボリックリンクと読んでみたり。

よく使う場面としては、
・インストーラ(パッケージインストーラも含む)が自動的にシステム用ショートカットとして作成してくれる
・ディレクトリ階層が深くオリジナルのハック(便利)ツールを引っ張ってくるとき
・ruby,pythonなど開発用の環境をバージョンごとに用意しなくてはならないとき
・データベースのバックアップデータを外部媒体に保持してあり、特定ディレトリ経由でマウントする必要があるとき

やはり必要だから生まれた んでしょうね。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

Windowsでいうところのショートカットと
同じ使い方と思ってほぼok

言葉は知ってるけど使ったことが無い
もっというとunixを使ったことがないので
イメージがわかないってことなのかなあ。
実際に ln コマンドで作ってみるといいと思う。
興味がわいたならファイルシステムについて
調べてみるといいかもしれません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

他の方が上げた利用例とは異なった部分で利用していたので回答します.

他の方の回答と同じような利用ケースももちろんありますが,
私は,dotfilesを全部シンボリックリンクにしています.
(dotfilesは,bashやzsh, vim, tmux などの設定ファイルを指しています)

設定ファイルをgithubなどのリポジトリで管理し,任意の場所にcloneして
シェルスクリプトを実行すればすべてホームディレクトリに設置されるようにしてます.

シンボリックリンクにしているのは,pullしたときに勝手に反映されると楽だからです.

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Linux

    3900questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • MacOS(OSX)

    1962questions

    MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

  • トップ
  • Linuxに関する質問
  • シンボリックリンクはどういった時に使いますか?(辞書的な意味では把握してますが、使う場面がわかりません)