シンボリックリンクを貼る=PATHを通す?

このQ&Aのポイント
  • シンボリックリンクを貼ると、指定したディレクトリにPATHを通すことができます。
  • シンボリックリンクはショートカットのようなもので、PATHが通っているディレクトリにリンクを作成することによって、そのリンク先のプログラムを実行することができます。
  • export PATHコマンドとは異なり、シンボリックリンクを貼ることでPATHの設定を行うことができます。
回答を見る
  • ベストアンサー

シンボリックリンクを貼る=PATHを通す?

リンク先で、ビルドした後、該当ディレクトリにPATHを通している(と思う)のですが、 どうしてこれでPATHが通るのでしょうか? ・シンボリックリンクって、ショートカットぐらいの認識しかないのですが、PATHが通っているディレクトリにシンボリックリンクを貼ると、PATHが通ることになるのでしょうか? ・$ export PATHと何が違うのでしょうか? ・同じ? >PATHの通ったディレクトリにphantomjsへのリンクを作成します。 >$ sudo ln -s ~/phantomjs/bin/phantomjs /usr/local/bin/phantomjs http://www.atmarkit.co.jp/ait/articles/1210/10/news012.html

  • re97
  • お礼率80% (601/744)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

>>PATHに対する探索にかかります。 >・ということは、シンボリックリンクを張れば、結果としてパスが通るのでしょうか? そうですね。 パスが通ったディレクトリに新しいファイルをコピーしたとき、結果的にそのファイルにもパスが通りますよね。それと同じです。 >・但し、それを一般的には「PATHを通す」とは言わない、ということでしょうか? 微妙なラインですが、いわない人が多いと思います。 「PATHを通す」は、環境変数PATHを設定する行為、そのものをさす場合が多いと思います。

re97
質問者

お礼

回答ありがとうございました。 大変参考になりましたー

その他の回答 (2)

回答No.2

ショートカットはあくまでショートカット、 シンボリックリンクはファイル(ディレクトリ)の実体がそのパスにあるように錯覚させるものです。 シンボリックリンクを管理するプログラム以外からは、シンボリックリンクが存在するパスにリンク先の実体が存在しているようにみえますので、これがPATHに対する探索にかかります。

re97
質問者

補足

回答ありがとうございます。 >PATHに対する探索にかかります。 ・ということは、シンボリックリンクを張れば、結果としてパスが通るのでしょうか? ・但し、それを一般的には「PATHを通す」とは言わない、ということでしょうか?

回答No.1

一般的にPATHを通すということは、「環境変数のPATHに追加する」という意味なので、シンボリックリンクを張ることとは異なります。 質問文にある行為は「PATHの通っているディレクトリに実行ファイルのショートカット(エイリアス)を作る」という感じの意味合いであって、「実行ファイルのあるディレクトリにPATHを通す」こととは違います。

re97
質問者

補足

回答ありがとうございます。 ・「PATH探索にかかる」という結果は同じでも、手段が違うということでしょうか? ・結果的に「PATHは通る」けど、一般的に使用される「PATHを通す」とはニュアンス(内容)が異なる、という意味でしょうか?

関連するQ&A

  • PostgreSQLをCentOS5にインストールしました。

    閲覧有難うございます。 質問内容なのですが、Postgresqlをインストールしたのですがpostgresql.confとpg_hba.confが見つかりません。 OSはCentOS5です。 インストール方法は以下の手順で行いました。 # /usr/sbin/adduser postgres # chown postgres:postgres /usr/local/pgsql # mkdir /usr/local/src/postgres-8.2.6 # chown postgres:postgres /usr/local/src/postgresql-8.3.7 # su - postgres # cd /usr/local/src # tar xfz /usr/local/src/postgres-8.2.6.tar.gz # cd /usr/local/src/postgres-8.2.6 # ./configure # make # make install また、 [root@ ~]# su - postgres -bash:  LD_LIBRARY_PATH=/usr/local/pgsql/lib: そのようなファイルやディレクトリはありません -bash:  export: command not found -bash:  PATH=/usr/local/pgsql/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin: そのようなファイルやディレクトリはありません -bash:  export: command not found -bash:  MANPATH=/usr/local/pgsql/man:: そのようなファイルやディレクトリはありません -bash:  export: command not found -bash:  export: command not found -bash:  PATH=/usr/local/pgsql/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin: そのようなファイルやディレクトリはありません -bash:  export: command not found -bash:  MANPATH=/usr/local/pgsql/man:: そのようなファイルやディレクトリはありません -bash:  export: command not found [postgres@ ~]$ のようなエラーがはかれるようになりました。 どうか皆様のお力をお貸しください。

  • パス(PATH)の設定ファイルについて

    OSはRed Hat Linux 9 を使用しております。 また、シェルはbashを使用しております。 ユーザがシステムにログインする際は、通常ですと /etc/profile ~/.bash_profile ~/.bash_login ~/.profile ファイルを読込、パス(PATH)の設定を行うと思いますが、 sshでrootユーザでシステムにログインした際は、 「echo $PATH」の結果は以下でした。 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/sbin su -で再度rootユーザでログインした際、もしくは、他ユーザからsu -でログインすると 「echo $PATH」の結果は以下でした。 /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:/root/bin:/sbin ログインの仕方でパス(PATH)に違いがあります。 また、「/usr/local/bin」をパス(PATH)として設定している記述が 上記ファイルに見当たりません。 http://sakaguch.com/PastBBS/0038/B0018808.html http://oshiete1.goo.ne.jp/kotaeru.php3?q=800405 等のサイトを参考に、以下ディレクトリ配下を確認しましても /etc/profile.d /etc/rc.d/init.d /etc/rc.d/rc3.d 「/usr/local/bin」をパス(PATH)として設定している記述が 見当たりません。 ログインの仕方でパス(PATH)に何故違いがあるのか、 また「/usr/local/bin」をパス(PATH)として設定している記述がある ファイルをご存知の方ご教授頂きたく思います。 宜しくお願いします。

  • シンボリックリンクでパミッションエラー?

    ブラウザからコマンド実行しようとするとエラーになります。 シンボリックリンクは関係ないかもしれません。 ・下記で何かおかしいことはあるでしょうか? ・「本体ファイル」と「シンボリックリンク」の「所有者」が異なっているのはマズいでしょうか? ・「x」がそれぞれ3つずつ表示されているので、実行権限に問題はない、という認識で合っているでしょうか? ■/usr/local/bin lrwxrwxrwx 1 root root phantomjs -> /home/user/phantomjs/bin/phantomjs ■/home/user/phantomjs/bin -rwxrwxr-x 1 user user phantomjs

  • 全ユーザのパスの指定

    RedHat7.1を使用しています。 質問なのですが あるパッケージをインストールして それが/usr/local/hogeというディレクトリに hogeという実行ファイル(つまり/usr/local/hoge/hoge)と pluginなどのファイル(hoge実行時に読み込まれる)ができるときに ユーザにそのhogeを実行させるにはどうすればいいでしょうか? 1.ユーザに/usr/local/hoge/hogeと打たせる これは少し避けたいです。 2./usr/bin以下にシンボリックリンクを作る 普通はこの方法をすぐ思いつきますが 実行時、他の必要なファイル(plugin)を /usr/binの中で探してしまい、エラーがでます。 3.全ユーザのパスを/usr/local/hogeに張る 結局、こうすることにしたのですが 全ユーザのパスを一度に変更する事は可能なのでしょうか? また、どうすればよいのでしょうか? あと、みなさんはこの場合、どんな方法をとっていますか?

  • 環境変数pathについて

    環境変数pathについてお聞きしたいことがあります。たとえば /usr/local/bin:/bin:/usr/bin: このような場合、/usr/local/binと/binと/usr/binに入力されたコマンドのプログラム ファイルを探しに行くというような解釈をしているのですが、 /usr/local/binがあるならば/binや/usr/binといったようなpathは必要ないような気がします。なぜこのような書き方をするのでしょうか? お忙しいところ申し訳ございませんがよろしくお願いします。

  • 複数ファイルのシンボリックリンク

    例えば、「/usr/local/hogehoge/bin/」 の中にある実行ファイル全てへのシンボリックリンクを「/usr/local/bin」の中に生成したいとき、何かいい方法はないでしょうか。 「/usr/local/bin」には他にもファイルが入っているので、これ自体はディレクトリのままでお願いします。 イメージとしては、 $ cd /usr/local/bin $ ln -s /usr/local/hogehoge/bin/* というようなことをやりたいです。 (できませんでしたが・・)

  • PATHいついて

    ShellScriptの中で Perlを呼び出して動かそうとしています。 Command not foundと返ってきてしまいます。 ShellScriptの先頭には、 #! /bin/bash が入っています。 また、$PATHを見てみると、 bash: /usr/local/bin:/usr/bin:/bin:..... となっています。 後、何をチェックして、正せば良いのでしょうか? よろしくお願い致します。

  • 環境変数JAVA_HOMEとPATHの違い

    JAVAをはじめて間もない初心者です。 ふと疑問に思ったことがあるので、質問させていただきます。 先日、自宅サーバ(CentOS4.6)にjava(j2sdk1.4.2_16)をインストールしたのですが、OSに元々javaがインストールされていました。 SHELL># whereis java と打つと[java: /usr/bin/java]と出てきて、実際/usr/bin以下にjavaの実行ファイルがあります。 自分でインストールしたjavaは /usr/loacl/j2sdk1.4.2_16というディレクトリを作成してその下に展開しています。 システムの環境変数に自分でインストールしたjavaを指定しようと SHELL># export JAVA_HOME=/usr/local/j2sdk1.4.2_16 SHELL># export PATH=${JAVA_HOME}/bin:${PATH} と設定したのですが、 $PATHには/usr/binも設定されています。 javaを実行した場合は、どちらのjava実行ファイルが参照されるのでしょうか? (OSに元からインストールされているjava[/usr/bin/java]なのか、自分でインストールしたjava[/usr/local/j2sdk1.4.2_16/bin/java]なのか) そもそも、JAVA_HOMEは何のために設定するのでしょう?googleなどで「JAVA_HOMEとは」などと調べたのですが、イマイチ僕の欲しい答えが出てきません。 javaへのPATHさえ設定していれば、問題ないような気がするのですが、、。 とても稚拙な質問だと思いますが、良ければアドバイスよろしくお願いします。

    • ベストアンサー
    • Java
  • sshdコマンドへのpathの貼りかた

    Linuxに関して質問があります。ターミナルでsshdを入力すると、 [xyz@localhost ~]$ sshd bash: sshd: command not found と出ます。 echo $PATHをやると、 [xyz@localhost ~]$ echo $PATH /usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/xyz/bin:/sbin とでます。 pathが通っていないのだと思うのですが、 .bash_profileに何と追記すれば良いのでしょうか?御教示下さい。宜しくお願い致します。

  • PATHについて

    PATH=/sbin:/usr/local/bin:/sbin となっていた場合、最後の/sbinを消したいときはどうすればよろしいでしょうか?