Linux scripting sem ./

1

Eu tenho 2 VMs. Um é o debian lenny e o outro é o Ubuntu. Existe um script pelo nome "dois" em diferentes pastas do debian (nome "dois" é o mesmo, mas o conteúdo é um pouco diferente em pastas diferentes) e quando eu vou para essa pasta, eu só tenho que digitar dois e entrar para fazer corre. Quando eu copiei o mesmo script para o Ubuntu, mesmo depois de dar permissões de execução, ele ainda não é executado simplesmente digitando dois. Eu tenho que digitar. / Dois para fazer o trabalho. Existe alguma maneira que eu possa digitar dois em suas respectivas pastas e os scripts serão executados sem ./?

    
por Samir Sogay 15.02.2013 / 16:11

3 respostas

1

Você pode adicionar o diretório atual ao seu caminho:

PATH="$PATH:."

Com este diretório atual sempre estará no caminho de pesquisa do shell.

Você pode persistir isso colocando o código acima em .bashrc ou .bash_profile

    
por 15.02.2013 / 17:42
3

Você tem que adicionar o diretório / programa em seu caminho .

Um caminho definido em .bash_profile será definido apenas em um shell de login do bash ( bash -l ). Se você colocar seu caminho em .profile , ele estará disponível para sua sessão completa de desktop. Isso significa que até mesmo a metacity irá usá-lo.

Por exemplo, ~/.profile :

if [ -d "$HOME/bin" ] ; then
  PATH="$PATH:$HOME/bin"
fi

Btw, você pode verificar a variável PATH de um processo observando seu ambiente em /proc/[pid]/environ . (substitua [pid] pelo número de ps axf )

    
por 15.02.2013 / 16:15
1

Em vez de adicionar. Para o PATH, talvez seja melhor adicionar o diretório onde "dois" reside. Por exemplo, se dois são realmente / usr / local / bin / two, então você diria

PATH = $ PATH: / usr / local / bin

E se você tiver muitos programas diferentes como dois, então você pode querer colocá-los todos em um diretório comum, em vez de ter que adicionar um novo diretório ao caminho de cada um.

    
por 15.02.2013 / 19:02

Tags