OS X - Crie um diretório bin pessoal (~ / bin) e execute scripts sem especificar o caminho completo


19

Então, o que estou tentando fazer é criar um bindiretório pessoal na minha pasta pessoal. Eu criei a seguinte pasta:

/Users/thi/bin

Eu coloquei meus scripts nessa pasta, mas se eu digitar no Terminal:

myScript

Não corre.

Foi-me dito que eu tinha que exportar esse caminho da lixeira, algo relacionado a echo $PATH, mas não sei como fazer isso.


veja também no final de apple.stackexchange.com/a/98626
nohillside

Respostas:


20

Você precisa adicionar o seguinte ao arquivo ~/.profile:

export PATH=/Users/thi/bin:$PATH

Então source ~/.profile

Observe que você pode precisar criar esse arquivo e, como começa com um ., pode não estar visível no localizador para edição através de um aplicativo como um editor de texto. Para listar todos os arquivos, incluindo os ocultos, use:

ls -la ~/

Se eu adicionar exportar PATH = / Users / thi / bin: $ PATH ao meu arquivo .bashrc, ele funcionará? Está correto?
Thi G.

12
Melhor usar em $HOME/binvez de /Users/thi/bin. Você poderá copiar suas configurações para outra máquina, onde seu nome de usuário talvez seja diferente.
lhf 23/08

Se eu digitar o terminal: PATH = $ HOME / bin: $ PATH e digite: export PATH. Será que vai fazer o truque?
Thi G.

1
Se você fizer isso, ele mudará as configurações agora, mas não em futuras botas. Para alterar o caminho de uma maneira que sobreviva à reinicialização, você precisa incluir esses comandos no seu .profilearquivo.
Daniel

1
Ótimo, obrigado a todos pelas respostas. Eu adicionei export PATH=$HOME/bin:$PATHao meu $HOME/.bash_profile.
precisa

10

Se você usar o bash, adicione uma linha como esta para ~/.bash_profile:

PATH=~/bin:$PATH

PATHestá marcado para exportação por padrão, então você não precisa usá-lo export.

Se ambos ~/.bash_profilee ~/.profileexist, festa só lê ~/.bash_profilequando é invocado como um shell de login interativo. ~/.profiletambém é usado por outros shells que podem não entender as mesmas opções de configuração do bash.

O Terminal e o iTerm 2 abrem novos shells como shells de login por padrão. Quando o bash é chamado como um shell de login interativo, ele lê, ~/.bash_profilemas não ~/.bashrc. Os emuladores de terminal em outras plataformas geralmente abrem novos shells como shells sem logon, portanto, por exemplo, o bash lê, ~/.bashrcmas não ~/.bash_profile. Usuários OS X utilizam frequentemente ~/.bash_profilecomo o arquivo de configuração pessoal correspondente a ~/.bashrcem outras plataformas, mas também é comum a fonte ~/.bashrcde ~/.bash_profileou para dizer Terminal ou iTerm 2 para abrir novas conchas como conchas não-login.

Você também pode alterar o caminho mais globalmente em /etc/pathsou /etc/launchd.conf, mas em muitos contextos o caminho ainda será o padrão /usr/bin:/bin:/usr/sbin:/sbin. E eu realmente só precisei mudar o caminho em shells e editores de texto.


Ótimo, obrigado pela resposta. Eu adicionei export PATH=$HOME/bin:$PATHao meu $HOME/.bash_profile.
Thi G.

Você não precisa exportar , e ambos ~(quando não $HOMEestão entre aspas) e é expandido antes da atribuição de variável ao usar exportação ou uma atribuição simples.
Lri

Lauri Ranta, o que você prefere pessoalmente, .bash_profileou .profile? Ou você tem um .bashrcno seu diretório pessoal?
Thi G.

Eu costumava usar apenas .bash_profile, mas agora uso .bashrc como meu arquivo de configuração principal e meu .bash_profile apenas contém . ~/.bashrc. Novos shells são abertos como shells sem login no modo shell no emacs e no tmux. Eu não usaria .profile como meu principal arquivo de configuração, porque também é lido por outros shells como o ksh.
Lri

3

Você normalmente colocaria caminhos adicionais depois do $PATHlike, PATH=$PATH:/$HOME/binporque se você não quiser substituir outro executável com o mesmo nome que possa estar /bin, etc.


4
Pode-se argumentar facilmente que você colocaria $HOME/binno início exatamente por esse motivo. Mas o principal é que a ordem dos diretórios seja $PATHimportante e que o shell escolha o primeiro comando correspondente. Obrigado por apontar isso.
nohillside
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.