Como reconstruir meu PATH no script?

0

Eu extraí meu PATH para um arquivo e o listei como tal:

/bin
/usr/bin
/usr/local/bin
.
/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin
/usr/java/default/bin
/usr/kerberos/bin
/usr/local/bin
/bin
/usr/bin

Desejo agora extraí-lo deste arquivo e restaurá-lo como uma linha em um novo arquivo com dois-pontos entre cada diretório. Estou recebendo um arquivo vazio podem alguns me mostrar o que estou fazendo de errado por favor? Este é o comando que estou executando para executar a restauração no arquivo:

echo -e ${bash_list tr \ :\n} > bash_PATH
    
por HankG 26.03.2015 / 21:08

1 resposta

2

tr recebe entrada de STDIN (entrada padrão). Tente isto:

$ tr '\n' ':' > output_file  < input_file

Você usou uma sintaxe para a expansão de parâmetros do Bash, mas está usando um arquivo como um parâmetro que não está correto, pois o parâmetro só pode ser variável ou um parâmetro especial do shell.

Para fazer o que você está tentando usando somente bash :

$ var="$(<bash_list)"
$ echo "${var//$'\n'/:}" > bash_PATH

Agora o arquivo bash_PATH conterá:

/bin:/usr/bin:/usr/local/bin:.:/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/bin:/usr/java/default/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin

Observe também que você tem nomes de diretório duplicados em "$ PATH" (espere que sejam intencionais por exemplo), para remover as duplicatas sem alterar a ordenação, você pode tentar isso .

    
por heemayl 26.03.2015 / 21:16