
私のファイルには、次のように個人データをロードする必要がある~/.profile
最後のブロックがあります。bin/ directory
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
しかし、ロードされていないようです。
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
なぜこれがうまくいかないのですか? (私のシェルはbashです。)
ティガー編集
echo $0 => bash
echo $HOME => /home/student
whoami => student
less /etc/*-release =>
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
答え1
上から~/.profile
:
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.
bash
したがって、(シェルとして使用する場合)システムに存在すると~/.bash_profile
推測されます。~/.bash_login
1つを選択して、次を含めるように編集します。
export PATH=$PATH:$HOME/bin
その後、保存source ~/.bash_login
またはログアウトしてからもう一度ログインしてください。
編集する:
~/.bash_profile
あなたはあなたの科が~/.bash_login
欠けていると言いました$HOME
。何か確認が必要だと思います。元の質問に次の結果を投稿します。
echo $0
echo $HOME
whoami
less /etc/*-release
編集2:
~/.profile
個人的に提供された情報と文書によると、あなたのイベントになぜ含まれていないのかわかりません。テスト中にログインする~/.profile
とssh
システムが検索されますが、新しい端末を起動すると検索されないことを確認しました。
$HOME/bin
ただし、これを対話型シェルに含める簡単なソリューションがあります。編集(または存在しない場合は作成)~/.bashrc
し、次の行を追加します。
export PATH=$PATH:$HOME/bin
保存してログアウトしてから再度ログインするか、source ~/.bashrc
。
必要にexport
応じて行を展開して存在するかどうかを確認できます。$HOME/bin
if [ -d "$HOME/bin" ]
then
export PATH=$PATH:$HOME/bin
fi
~/.bashrc
他のファイルはなぜできませんか?個人的な好みだからもっと信頼が行くようです。
答え2
これインパッケージングシェル起動ファイルの規則は複雑です。。設定で.profile
Xセッションで新しいターミナルを開くと、おそらく含まれません(これを入れてecho .profile
シェル.profile
を起動したときにメッセージが表示されることを確認してください)。
. "$HOME/.profile"
構成ファイルを手動で再ロードする必要があります。
XにログインしてログアウトしてもXが.profile
ロードされます。
あるいは、(二重埋め込みを防ぐために変数ベースのガードを使用している間)、シェルが起動するたびに常に含まれるようにすることもできます. $HOME/.profile
。.bashrc
.profile
export PATH
(PATH
すでにエクスポートされている変数であり、その値を変更しても状態は変わりません。これを行う必要はありません。export
)
答え3
ロードするには.profile
ログインシェルを起動する必要があります。
$ bash -l
これは走るのに十分でしょう。 bashの起動にログインする前と後のPATHを比較して、違いを確認できます。
より永続的な解決策を得るには、ターミナル(コンソール)が起動する前に特定の時点でログインシェルを起動する必要があります。特定のユーザーとしてログインすることは、一部のdm(ディスプレイマネージャ)(gnome、kde、xfce、lxdeなど)で行われます。必要に応じて環境変数PATHを変更することは、どちらかの操作でなければなりません。
たとえば、xfceの場合、解決策は次のように変更することですxinitrc
。
$ cat >"$HOME/.config/xfce4/xinitrc" <<-\_EOT_
#!/bin/sh
# Ensure programs in ~/bin are available for the X session.
p="$HOME/bin";
[ "$p" != "${PATH%%:*}" ] && export PATH=$p:$PATH
_EOT_
cat "/etc/xdg/xfce4/xinitrc" | tail -n+2 >> "$HOME/.config/xfce4/xinitrc"
GNOMEの場合変更するファイルはい~/.pam_environment
。
KDEの場合、このガイドに従ってください、ファイルを生成するには、次のコードを使用できます。
$ file='$HOME/.config/plasma-workspace/env/path.sh'
$ code='export PATH=$HOME/bin:$PATH'
$ echo "$code" >> "$file"