无法将文件夹添加到 .profile 文件中的 PATH

无法将文件夹添加到 .profile 文件中的 PATH

以下是我的.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,您需要只输入matlabPATH仅当命令名称中没有斜杠时才使用该变量。

另外,删除该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变量。

相关内容