por que o PATH não funciona quando eu adiciono o env nele e quero executar um programa sob o env?

1

Eu coloquei um programa cow em /opt e então editei .bashrc adicionando

export PATH=“$PATH:/opt” 

agora o $ PATH tem /opt

mas quando quero executar cow diretamente, obtenho

$ cow
The program 'cow' is currently not installed. You can install it by typing:
sudo apt-get install fl-cow

Ainda preciso executar /opt/cow

o que está errado?

    
por Lily 08.07.2017 / 19:48

3 respostas

2

Parece que você está usando o tipo errado de citações ("") vs (""):

echo $PATH
/home/anon/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
sudo bash -c 'echo \
$ echo $PATH
# this is correct
/home/anon/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
$ export PATH=“$PATH:/opt” 
$ echo $PATH
# this is incorrect
“/home/anon/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt”
$ 
this is a test' >/opt/test.sh;sudo chmod +x /opt/test.sh anon@masterbox:~$ export PATH=“$PATH:/opt” anon@masterbox:~$ test.sh bash: test.sh: command not found anon@masterbox:~$ . .bashrc anon@masterbox:~$ export PATH="$PATH:/opt" anon@masterbox:~$ test.sh /opt/test.sh this is a test anon@masterbox:~$

Editar: para esclarecer melhor o problema aqui, veja o que acontece quando faço do seu jeito:

echo $PATH
/home/anon/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
sudo bash -c 'echo \
$ echo $PATH
# this is correct
/home/anon/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
$ export PATH=“$PATH:/opt” 
$ echo $PATH
# this is incorrect
“/home/anon/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt”
$ 
this is a test' >/opt/test.sh;sudo chmod +x /opt/test.sh anon@masterbox:~$ export PATH=“$PATH:/opt” anon@masterbox:~$ test.sh bash: test.sh: command not found anon@masterbox:~$ . .bashrc anon@masterbox:~$ export PATH="$PATH:/opt" anon@masterbox:~$ test.sh /opt/test.sh this is a test anon@masterbox:~$

O Bash não interpreta corretamente a variável PATH dessa maneira. As citações Unicode não funcionam dessa maneira em sistemas unix. Espero que isso responda à sua pergunta.

    
por 08.07.2017 / 19:54
0

Existem, para mim, 2 grupos de arquivos onde você pode definir $ PATH:
1. Os arquivos bash, como ~ / .profile, ~ / .bashrc, e seus equivalentes / etc. 2. / etc / enviroment e ~ / .pam_environment
Esses locais são globais para todos os usuários e alguns são específicos do usuário. Eu recomendo que você escreva o comando que você usou em um desses locais, lembrando que os arquivos com o ~ só funcionam com o usuário que usa o diretório inicial onde foi colocado o arquivo.
Lembre-se também, se você escrever o caminho, por exemplo, ~ / .bashrc sendo, por exemplo, o usuário Robertus, se você mudar para root o caminho mudará para root, seguindo o seu próprio ~ / .bashrc e company.

Espero que você tenha encontrado minha resposta útil

    
por 08.07.2017 / 20:02
0

O cow work funciona se você o executar como:      /opt/cow ? Se não, verifique o modo do arquivo 'cow'; ele precisa ter o bit executável definido. Caso contrário, use: chmod +x /opt/cow

    
por 08.07.2017 / 20:06

Tags