~/bin 中的脚本出现“未找到命令”

~/bin 中的脚本出现“未找到命令”

我安装了 Ubuntu 17.04 并将我的自定义脚本复制到~/bin。然后我通过 使该目录中的所有文件都可执行chmod。我在 GUI 中仔细检查,文件是可执行的。

我检查了 ~/.profile,它已经包含以下行(未被注释掉):

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

但是,当我尝试通过在终端中输入来运行脚本(在该目录中)时my-script-name,出现“未找到命令”错误,而当我输入时~/bin/my-script-name,它就可以正常运行。

在 16.04 LTS 中,我能够~/bin以这种方式从目录运行自定义脚本,但在 17.04 中却无法使用。我需要做什么才能使其工作?17.04 不再检查该目录了吗?

答案1

~/.profile仅在登录时自动获取。您必须注销并重新登录才能使更改生效。

您也可以source ~/.profile在终端中运行,但更改仅对该终端生效。

当您运行时exec -l bash,会打开一个登录 shell,但仅限于该终端。

答案2

我读到过尝试运行exec -l bash,只要终端窗口处于打开状态,就可以解决该终端窗口内的问题。但是,当我关闭窗口并尝试在新窗口中运行脚本时,我再次遇到了同样的问题。

此时,我尝试重新启动,问题已解决,尽管我真的不明白为什么。当我运行 时export | grep $PATH,我现在得到以下内容:

declare -x PATH="/home/myusername/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"

因此,运行exec -l bash然后重新启动可能会解决问题。如果您有任何意见或解释,请告诉我这是否是相关的操作,或者这是否只是通过重新启动解决的偶然事件,我将不胜感激。

答案3

如果你想自定义执行脚本的路径在终端会话中 ,最好将路径声明放在 ~/.bashrc 文件中。

因此,编辑您的 ~/.bashrc 文件并在该文件末尾添加以下行:

export PATH=$PATH:$HOME/bin

或者

export PATH=$PATH:~/bin

因此每次您打开终端会话时,PATH 都会得到正确配置。您无需重新启动或重新登录您的会话!

相关内容