私は試した:
gaspipe@kali:~/bashscripts$ ls
./ ../ addpath* autoinstaller
gaspipe@kali:~/bashscripts$ cd ..
gaspipe@kali:~$ addpath
addpath: command not found
gaspipe@kali:~$ addpath*
addpath*: command not found
gaspipe@kali:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games/home/gaspipe/bashscripts
環境変数manに関連する問題は、PATH
Linuxではこれほど難しいことはなく、非常に単純な概念です。しかし、パスにディレクトリを追加するスクリプトを作成するだけでも私にとっては難しいことです。
引き続きファイルを開き、長いパス名を入力したくありません~/.bashrc
。ただ入力addpath <dir>
して終わりたいです。
なぜこれが確立された手順ではないのですか?
答え1
ローカルフォルダは/usr/gamesディレクトリから分離されていません。
gaspipe@kali:~$ echo $PATH
...:/bin:/usr/local/games:/usr/games/home/gaspipe/bashscripts
それが必要です:
gaspipe@kali:~$ echo $PATH
...:/bin:/usr/local/games:/usr/games:/home/gaspipe/bashscripts
(違いをより明確にするためにPATHの始めを切り取りました。)
答え2
現在のシェル環境を操作するためのスクリプトが必要な場合は、次のスクリプトを入手する必要があります。
source ./addpath
または
. ./addpath
addpath
または、シェル関数またはエイリアスを作成できます。
通常の方法でスクリプトを実行すると、現在のシェルは現在のシェル環境のコピーを使用してスクリプトを実行するための新しいプロセスを作成します。スクリプトはコピーを変更した後、スクリプトが終了するとプロセスが終了し、変更された環境が失われます。
一方、シェル関数とエイリアスは現在のシェルで実行されるため、コマンドラインセッションの環境を簡単に変更できます。
答え3
サンプルスクリプトがあります。
$ cd ~/bin
$ cat example
#!/bin/bash
echo Hello
source
これを実行するには、telcoMの答えのようにすることができます。
$ source example
Hello
ただし、自分で実行できるように実行権限を追加します。
$ ls -l
-rw-r--r-- 1 stew stew 23 Feb 12 10:15 example
$ chmod +x example
$ ls -l
-rwxr-xr-x 1 stew stew 23 Feb 12 10:15 example
これで、絶対パスまたは相対パスを参照してスクリプトを呼び出すことができます。
$ ./example
Hello
$ ~/bin/example
Hello
このコマンドを頻繁に実行したくない場合は、通常これで十分です。ただし、ファイルを頻繁に実行する場合は、場所を指定せずに実行可能ファイルを実行することをお勧めします。
$PATH
通常、私はこのスクリプトをすでに指定された場所(たとえば)に配置します/usr/local/bin
。すべてのカスタムスクリプトが同じ場所にあり、すべてのユーザーが使用できるため、クリーンな状態を維持するのに役立ちます。
場合によっては、ユーザー固有のスクリプトを含めたい場合があります。$HOME/bin
その場合は、そのディレクトリを$PATH
環境変数に追加する必要があります。
PATH
現在のコマンドに一時的にディレクトリを接続できます。
$ echo $PATH
/usr/local/bin:/usr/bin:/bin
$ PATH=$PATH:~/bin example
Hello
$ echo $PATH
/usr/local/bin:/usr/bin:/bin
まだディレクトリパスを入力しているので、これはあまり役に立ちません。これは、環境変数を介して単一の実行のオプションを設定するのに最も便利です。
より長く持続したい場合(おそらくこのシェルセッションでコマンドを複数回実行したい場合)、シェルに設定できます。
$ PATH=$PATH:~/bin
$ example
Hello
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:~/bin
これは、次の 10 分間コマンドを複数回使用してから再度使用しない場合に便利です。ただし、新しい端末が起動すると、この変更は失われます。
を使用していると仮定すると、bash
bashの起動時に自動的に設定して、セッション間でこの変更を維持することができます。次のコマンドは、新しいbashrc
インスタンスが起動されるたびに実行されるユーザーディレクトリに自分のディレクトリを追加します。bash
$ echo 'PATH=$PATH:~/bin` >> ~/.bashrc
これで、新しいシェルを起動するたびに私のディレクトリに含まれ、パスをPATH
指定せずに呼び出すことができます。example
これはシステムの他のユーザーには影響しません。
$ example
Hello
:
特定の質問で最大の間違いは、$PATH
既存のディレクトリとカスタムディレクトリの間にコロンを追加しないことです。