É possível ter variáveis de ambiente no caminho do diretório de trabalho: PS1?

1

Estou no Lubuntu e estou usando o bash. Meu PS1 (em .bashrc) é:

PS1="\w> "

Eu gosto porque preciso colar o diretório de trabalho o tempo todo. O problema é que o caminho é sempre muito longo e desde que eu uso terminator eu só tenho metade da largura da minha tela disponível para exibi-lo ... é feio e chato. Meu prompt de comando é assim:

/this/is/a/very/long/path/that/i/want/to/make/shorter >

Gostaria de definir minhas variáveis de ambiente:

$tiavl=/this/is/a/very/long

E então eu vou pegar:

$tiavl/path/that/i/want/to/make/shorter >

O objetivo é ter algo mais curto no prompt de comando, mas eu ainda quero copiar e colar:

cd $tiavl/path/that/i/want/to/make/shorter

É um pouco como com o $ HOME:

~/path/that/i/want/to/make/shorter  >

Eu sei onde estou e posso copiar e colar o ~.

Obrigado.

    
por mthpvg 26.10.2012 / 12:13

3 respostas

2

Você pode fazer isso com uma pequena função de ajuda, como abaixo (use /home como um caminho de prefixo de exemplo):

~ > pwd
/home/me
~ > tiavl=/home
~ > prompt_path () { echo ${1/#$tiavl/\$tiavl}; }
~ > export PS1="\$(prompt_path \w) > "
$tiavl/me > 

Isto usa uma função simples de manipulação de string (veja aqui para muitos exemplos) na função para substituir a parte inicial do caminho com um literal $tiavl se corresponder a.

Aqui está uma demonstração de como atualizar essa função para vários caminhos.

#! /bin/sh

path1=/home
path2=/usr
path3=/var

prompt_path() {
    local path
    path="${1/#$path1/\$path1}"
    path="${path/#$path2/\$path2}"
    path="${path/#$path3/\$path3}"
    echo "$path"
}

prompt_path $HOME
prompt_path /usr/local
prompt_path /var/tmp
    
por 26.10.2012 / 12:43
1

Se você copiar e colar no terminal, basta usar a variável de ambiente $ PWD, que sempre mostrará o diretório de trabalho.

echo $PWD

mostra o diretório de trabalho.

    
por 26.10.2012 / 13:01
0

Então basicamente você faz um script bash:

prompt_path

que contém:

#! /bin/sh
path="${1/#$path1/\$path1}"
path="${path/#$path2/\$path2}"
path="${path/#$path3/\$path3}"
echo "$path"

Você coloca em uma pasta como:

~/.local/bin

Você dá x diretamente ao seu script:

chmod u+x prompt_path

No seu ~ / .bashrc:

1 - você muda o PS1 para:

PS1="\$(prompt_path \w) > "

2 - você adiciona essas linhas:

export path1=/home
export path2=/usr
export path3=/var

3 - você indica para poder chamar seu script de qualquer lugar:

export PATH=~/.local/bin:$PATH

Por fim, você obtém seu .bashrc:

. ~/.bashrc
    
por 26.10.2012 / 15:24