我安装了 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 都会得到正确配置。您无需重新启动或重新登录您的会话!