Bash

H哦_和/bind我不知道_________H這米和/b一世nd一世r一世sn這噸這n噸H和HOME/bin dir is not on the小路

  • March 4, 2020

在我~/.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/"

從頂部開始~/.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你的系統上。選擇一個並編輯它以包括:

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包含在您的互動式 shell 中。編輯(如果不存在則創建)~/.bashrc並向其中添加以下行:

export PATH=$PATH:$HOME/bin

保存、註銷並重新登錄,或source ~/.bashrc.

export如果您願意,可以擴展該行以檢查是否$HOME/bin存在:

if [ -d "$HOME/bin" ]
then
   export PATH=$PATH:$HOME/bin
fi

為什麼~/.bashrc而不是另一個文件?個人喜好,似乎也更可靠。

引用自:https://unix.stackexchange.com/questions/381228