さて、まず私はLinuxに初めて触れ、Linux Mintを使っています。
私(特に私のホームディレクトリ)にさらにディレクトリを追加するには、PATH
同様のBashコマンドが必要であることを学びましたPATH=$PATH:~
。そうですか?
$PATH
問題はなぜそれをそこに入れなければならないのですか。システムパスを意味します。そうですか?ただ入力すると機能しますかPATH=~
?私は、私のホームディレクトリを既存のディレクトリに追加したいという意味ですPATH
。
ベストアンサー1
Unixでは、環境変数などの一部の環境変数は、個々の項目ではなく$PATH
項目のリストであるという点で特別です。このタイプのリストでは、コロン(:
)でリスト内の項目を区切ります。
$PATH
ただ印刷すると次のように見えるからです。
$ printenv PATH
/sbin:/bin:/usr/sbin:/usr/bin
追加アイテムを追加するには、新しいアイテムだけでなく古いリストも含める必要があります。あなたがそう言うとき、それは実際にあなたがやっていることですPATH=$PATH:<new item>
。
$ PATH=$PATH:/path/to/some/dir
$ printenv PATH
/sbin:/bin:/usr/sbin:/usr/bin:/path/to/some/dir
これらの変更は実行されるシェルにのみ適用されることに注意してください。再起動後も変更を保持したりシェルの他のインスタンスに表示したりするには、その$PATH
変更がデフォルト値の一部になるように構成ファイルに追加する必要があります。
通常、ユーザーはこれらのファイルを使用して次のことを行います~/.bashrc
。~/.bash_profile
export PATH=$PATH:$HOME/bin:$HOME/somedir
このような行を追加すると$PATH
。
代替$PATH
使用
実行可能ファイルにないスクリプトと実行可能ファイルを実行したい場合$PATH
。$PATH
以下はシナリオです。次の実行可能ファイルがあるとします。
$ ls -l helloexec.bash
-rwxr-xr-x 1 user1 user1 31 Aug 12 07:45 helloexec.bash
しかし、そこにない$PATH
ので実行できません。
$ helloexec.bash
bash: helloexec.bash: command not found...
$PATH
だからあなたは「ああ、これを実行するには私のアイテムに追加する必要がある」と思います。ただし、次のように現在のディレクトリから実行可能ファイルを実行できます。
$ ./helloexec.bash
hello bash
Unix型オペレーティングシステムでは、スクリプトと実行可能ファイルの両方$PATH
。
リスクが追加されました$PATH
あなたの例では、あなたはこれを~
あなたの$PATH
。$PATH
これは一般的に良いアプローチではありません。代わりに、Linux / Unixで実行可能ファイルを保存する場所を慎重に検討し、目立つ場所(たとえば$PATH
。
ほとんどの人は通常、システムディレクトリを追加してから1つを追加して$HOME/bin
その$PATH
ままにします。より多くの内容を入力すると、$PATH
コマンドが期待どおりに機能しない、または悪い場合など、意図しない結果が発生し、システムが破損する可能性が高くなります。
たとえば、Webサイトからいくつかのスクリプトをダウンロードしたが、Webブラウザがファイルを$HOME
。
または、シーケンスが次のように$PATH
別のディレクトリ以前の状態にある場合~
:
$ printenv PATH
/home/vagrant:/sbin:/bin:/usr/sbin:/usr/bin
誤って以下の実行可能ファイルをダウンロードしました。
$ cat ps
#!/bin/bash
/bin/ps -eaf | grep -v "spyware"
誰かが実行すると、ps
予想バージョンの代わりにこのバージョンを使用します/bin/ps
。