Não é possível adicionar a pasta ao PATH no arquivo .profile

0

O seguinte é meu arquivo .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

O caminho para matlab ( ~/../../usr/local/MATLAB/R2015a/bin/ ) foi adicionado recentemente. Mas, depois de adicionar o caminho matlab , ainda não posso executar matlab de QUALQUER pasta simplesmente executando o comando ./matlab .

Estou adicionando o caminho corretamente?

Devo reiniciar o sistema para que as alterações sejam aplicadas?

    
por Naveen 26.08.2015 / 21:06

4 respostas

2

A reinicialização não é necessária, mas o recarregamento de .profile é. Tente executar source .profile . Como alternativa, você pode fazer logoff e fazer logon novamente.

    
por 26.08.2015 / 21:26
2

O principal problema é que ./matlab executa o executável chamado matlab no diretório atual. Para procurá-lo em $PATH , você precisa digitar apenas matlab . A variável PATH é usada apenas quando não há barra no nome do comando.

Além disso, remova a linha export PATH=… e adicione

PATH=$PATH:/usr/local/MATLAB/R2015a/bin

ou

PATH=/usr/local/MATLAB/R2015a/bin:$PATH

antes da linha if [ -d "$HOME/bin" ] . Já existe um código para adicionar /home/naveen/bin (supondo que seja seu diretório pessoal, e se não for $HOME/bin o correto a ser adicionado), então você não precisa adicioná-lo novamente. Se $HOME/bin não existir, você ainda deseja adicionar o diretório Matlab, portanto, ele está fora do if . Use um caminho absoluto, um caminho relativo não faz sentido aqui. Adicione o diretório Matlab primeiro ou último, dependendo se você deseja que os executáveis do Matlab tenham prioridade sobre outros executáveis com o mesmo nome em diretórios diferentes (provavelmente não há executáveis com o mesmo nome, caso em que não importa). / p>

Você não precisa reiniciar. No entanto, .profile é lido apenas quando você efetua login. Você também pode recarregá-lo para uma sessão de terminal digitando . ~/.profile no shell; isso só se aplica a programas iniciados a partir desse shell específico.

    
por 26.08.2015 / 21:27
2

Seu exemplo não faria nada se $HOME/bin não existir. Talvez tente isso em vez disso:

# 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

E, executar ./matlab nunca funcionará (se matlab não estiver no diretório atual) porque você está tentando executar matlab especificamente no diretório atual. Simplesmente execute matlab .

Outra opção seria ligar simbolicamente o matlab no seu $HOME/bin em vez de adicioná-lo ao caminho (se for o único executável que você deseja executar a partir daí:)

ln -s /usr/local/MATLAB/R2015a/bin/matlab ~/bin/

Editar: você precisará sair ou executar source ~/.profile em cada shell.

    
por 26.08.2015 / 21:28
1

Tente digitar simplesmente matlab e não ./matlab .

O ./ significa que você está procurando pelo executável matlab no diretório atual sem passar pela variável PATH .

    
por 26.08.2015 / 21:26