以下是我的.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.
# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
export PATH=/home/naveen/bin:~/../../usr/local/MATLAB/R2015a/bin/:$PATH
fi
最近添加了matlab
( )的路径。~/../../usr/local/MATLAB/R2015a/bin/
但是,添加路径后matlab
,我仍然无法matlab
通过简单地运行命令来从任何文件夹运行./matlab
。
我添加的路径正确吗?
我应该重新启动系统以使更改生效吗?
答案1
不需要重新启动,但重新加载.profile
是必要的。尝试跑步source .profile
。或者,您可以注销并重新登录。
答案2
主要问题是运行当前目录中./matlab
调用的可执行文件。matlab
要在 中查找它$PATH
,您需要只输入matlab
。PATH
仅当命令名称中没有斜杠时才使用该变量。
另外,删除该export PATH=…
行并添加
PATH=$PATH:/usr/local/MATLAB/R2015a/bin
或者
PATH=/usr/local/MATLAB/R2015a/bin:$PATH
行前if [ -d "$HOME/bin" ]
。已经有需要添加的代码/home/naveen/bin
(假设这是您的主目录,如果不是,则$HOME/bin
添加正确的代码),因此您无需再次添加它。如果$HOME/bin
不存在,您仍然要添加 Matlab 目录,因此它属于if
.使用绝对路径,相对路径在这里没有意义。首先或最后添加 Matlab 目录,具体取决于您是否希望 Matlab 可执行文件优先于不同目录中同名的其他可执行文件(可能没有同名的可执行文件,在这种情况下没关系)。
您不需要重新启动。但是,.profile
仅在您登录时读取。您还可以通过. ~/.profile
在 shell 中键入来为终端会话重新加载它;这只适用于从该特定 shell 启动的程序。
答案3
$HOME/bin
如果您的示例不存在,则不会执行任何操作。也许可以尝试这个:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
PATH=/usr/local/MATLAB/R2015a/bin/:$PATH
并且,运行./matlab
永远不会起作用(如果matlab
不在当前目录中),因为您试图matlab
在当前目录中专门运行。只需运行即可matlab
。
另一种选择是将 matlab 符号链接到您的路径中$HOME/bin
,而不是将其添加到路径中(如果它是您想要从那里运行的唯一可执行文件:)
ln -s /usr/local/MATLAB/R2015a/bin/matlab ~/bin/
编辑:您需要注销或source ~/.profile
在每个 shell 中运行。
答案4
尝试简单地输入matlab
而不是输入./matlab
。
这./
意味着您正在当前目录中查找可执行文件,matlab
而不通过PATH
变量。