Como diferenciar entre o lançamento com script do Terminal e o lançamento manual para configurações de .bash_profile


3

eu tenho alguns .bash_profile configurações que restauram meu último diretório de trabalho toda vez que eu faço login no meu shell. No entanto, eu também uso um programa que abre uma janela de terminal no diretório atual aberto no Finder, e faz isso enviando um evento para o Terminal usando SBApplication .

Existe uma maneira que eu possa detectar o caminho que o Terminal foi aberto na minha .bash_profile? No momento, as configurações do bash substituem cd para aplicativo.

# Setting PATH for Python 3.4
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.4/bin"
export PATH

# My settings
trap 'printf %s "$PWD" > ~/.storepwd' EXIT

cd "$(<~/.storepwd)"

Edite sua pergunta adicionando as configurações adicionadas ao seu .bash_profile que são relevantes para esta questão.
user3439894

Por favor, adicione uma resposta em vez de editar uma solução na sua pergunta. Você pode adicioná-lo à resposta aceita ou o usuário jherran pode fazê-lo
klanomath

BTW "PATH =" / Library / Frameworks / Python.framework / Versões / 3.4 / bin "... export PATH" provavelmente quebrará seu PATH
klanomath

@klanomath obrigado, novo neste site. Sim, eu rapidamente editei algumas coisas no meu caminho que eu não achei relevantes para a pergunta e esqueci de deixar o: $ {PATH} no final: P
cdamayor

Respostas:


0

Você pode exibir Variáveis ​​BASH Nas suas .bash_profile. Em seguida, compare a saída quando você manualmente abrir o terminal com saída quando cd para app abre o terminal.

Eu quis dizer acrescentar no início do seu .bash_profile as variáveis ​​bash listadas no site:

echo $BASH
echo $BASHOPTS
echo $BASHPID
...
echo $TMPDIR
echo $UID

Em seguida, abra manualmente o terminal e salve a saída. Abra o terminal do cd para e salve a saída.

Compare os arquivos.


A variável apropriada para o exemplo acima é DIRSTACK.

Aqui estão as novas configurações para aqueles que estão passando:

# My settings
if [ $DIRSTACK = "~" ]; then
    trap 'printf %s "$PWD" > ~/.storepwd' EXIT
    cd "$(<~/.storepwd)"
fi

1
Você poderia elaborar um pouco sobre isso, talvez inclua um exemplo de trabalho também?
user3439894

BASHOPTS não está definido no padrão bash no OSX.
nohillside

Obrigado @jherran! A variável que eu estava procurando é $ DIRSTACK.
cdamayor
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.