Eu tenho duas partes muito distintas para esta resposta. Vou começar com um pouco mais técnico, e depois com mais pensamento pessoal (ok, rant).
O shell bash
vem com um script cshtobash
escondido no diretório examples/misc
de sua distribuição de origem.
Isso não pegará um script csh
e o converterá em bash
, mas pode ser útil para alguém como primeiro passo na criação de um protótipo sh
-style ~/.profile
de arquivo de um arquivo csh
-style ~/.login
já existente.
Entrada: arquivo padrão de inicialização do OpenBSD csh
.
# $OpenBSD: dot.login,v 1.6 2015/12/15 16:37:58 deraadt Exp $
#
# csh login file
if ( ! $?TERMCAP ) then
if ( $?XTERM_VERSION ) then
tset -IQ '-munknown:?vt220' $TERM
else
tset -Q '-munknown:?vt220' $TERM
endif
endif
stty newcrt crterase
set savehist=100
set ignoreeof
setenv EXINIT 'set ai sm noeb'
if (-x /usr/games/fortune) /usr/games/fortune
Saída: não é a mesma coisa para bash
... mas pelo menos alguma coisa .
# csh aliases
# csh environment variables
export USER='me'
export HOME='/home/me'
export PATH='/usr/bin:/bin:/usr/ucb:.'
export TERM='rxvt'
export SHELL='/bin/bash'
export EXINIT='set ai sm noeb'
# csh variables
set -o ignoreeof # ignoreeof
PS1='% '
prompt2='? '
HISTFILESIZE='100'
# special csh variables converted to bash equivalents
Sim, a programação C-shell é "considerada prejudicial". Isso não significa que você não pode escrever scripts de shell C-shell que não sejam prejudiciais ou não sejam robustos. Isso também não significa que todo script C-shell precisa ser convertido em bash
. E isso definitivamente não significa que tal conversão deva ser feita por uma ferramenta automática! Significa apenas que é uma linguagem estranha que tem algumas peculiaridades muito estranhas, especialmente se você está mais acostumado com sh
.
Como acontece com quaisquer duas linguagens de programação, quando uma sai de moda para o benefício da outra, isso não significa que software existente precise ser reescrito. Também não significa que os falantes proficientes da linguagem fora de moda devam parar de falar. Significa apenas que esta pode não ser a linguagem para pegar se você está procurando por uma linguagem moderna para fazer scripts de shell.
Por outro lado, se você tiver a tarefa de estender ou de alguma outra forma modificar um script csh
, então pode haver um motivo para
- leia o código
- entenda
- reimplementá-lo em outro idioma
... especialmente se você não for bom em csh
programming.
Quanto à tradução automática: Por quê?
Se o script estiver funcionando e você tiver o intérprete para ele em seu sistema, não haverá necessidade de traduzir o código. É improvável que a tradução automática do código gere código "melhor", o que provavelmente não gerará código sustentável , e você terá que gastar tempo para verificar se o script traduzido se comporta da mesma maneira como o script original de qualquer maneira.