回答:
$ PATHは、コマンドの検索に使用される環境変数です。〜はホームディレクトリであるため、〜/ binは/ home / user / binになります。通常のディレクトリです。
たとえば、シェルで「ls」を実行すると、実際には/ bin / lsプログラムが実行されます。正確な場所は、システム構成によって異なる場合があります。これは、/ binが$ PATHにあるために発生します。
パスを表示して、特定のコマンドが配置されている場所を見つけるには:
$ echo $PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:...
$ which ls # searches $PATH for an executable named "ls"
/bin/ls
$ ls # runs /bin/ls
bin desktop documents downloads examples.desktop music pictures ...
$ /bin/ls # can also run directly
bin desktop documents downloads examples.desktop music pictures ...
独自のプライベートbinディレクトリを作成するには、パスに追加するだけです。これを行うには、〜/ .profile(隠しファイル)を編集して以下の行を含めます。行にコメントが付けられている場合は、コメントを外すだけで済みます。彼らがすでにそこにいるなら、あなたはすべて準備ができています!
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ]; then
PATH="$HOME/bin:$PATH"
fi
ここで〜/ binディレクトリを作成する必要があります。ログイン時に.profileが実行され、その時点で〜/ binが存在する場合にのみ追加されるため、更新されたPATHを表示するには再度ログインする必要があります。
テストしてみましょう:
$ ln -s $(which ls) ~/bin/my-ls # symlink
$ which my-ls
/home/user/bin/my-ls
$ my-ls -l ~/bin/my-ls
lrwxrwxrwx 1 user user 7 2010-10-27 18:56 my-ls -> /bin/ls
$ my-ls # lookup through $PATH
bin desktop documents downloads examples.desktop music pictures ...
$ ~/bin/my-ls # doesn't use $PATH to lookup
bin desktop documents downloads examples.desktop music pictures ...
type
実際のコマンドがシェルによってどのように解決されるかを確認するために使用すると便利です。例えば:which echo
とtype echo
異なることを報告し、which
リターン「/ binに/エコー」が、「タイプ」に戻り、それはシェルが「/ binに」内のファイルをオーバー好むでしょうシェル組み込み、だという。
which
によって、type
またはcommand
対話型シェルでより適切に置き換えられ、スクリプトではまったく役に立ちません。
$HOME
変数は$PATH
何らかの理由で機能しません。つまり、~
代わりに符号を使用する必要があります。
~/bin
ユーザーのみが利用できるコマンド/プログラムについて
最近のUbuntuバージョンでは、ディレクトリが存在している場合にのみ、ディレクトリが~/bin
ディレクトリに含まれます。$PATH
~/bin
存在しない場合:
に~/.profile
次のスタンザが含まれていることを確認します(デフォルトでは~/.profile
既に含まれています)。
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
~/bin
ディレクトリを作成します。
mkdir -p ~/bin
コンピューターを再起動するか、bashに再読み込みを強制します~/.profile
。
exec -l bash
exec -l bash
」ヒントをありがとう。-l
フラグは何をしますか?で説明が見つかりませんman exec
。
exec -l
ログインシェル[ wiki.bash-hackers.org/commands/builtin/exec]としてbashを実行します。要するに、bashに強制的に再読み込み/etc/profile
とを強制し~/.profile
ます。実行exec bash
するだけで再読み込みのみ~/.bashrc
です。