Не удалось добавить папку в PATH в файл .profile.

Ниже приведен мой файл .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 .

Я правильно добавляю путь?

Должен ли я перезагружать систему для внесения изменений?

Перезагрузка не требуется, но перезагрузка вашего .profile . Попробуйте запустить source .profile . Кроме того, вы можете выйти из системы и снова войти в систему.

Основная проблема заключается в том, что ./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 . ~/.profile в оболочке; это относится только к программам, запущенным из этой конкретной оболочки.

Ваш пример ничего не сделал бы, если $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 в каждой оболочке.

Попробуйте ввести просто matlab а не ./matlab .

./ означает, что вы ищете исполняемый matlab в текущем каталоге, не проходя через переменную PATH .