cshrc executa bashrc dentro de si mesmo?

2

Minha escola tem nossas contas Linux usando csh / tcsh por padrão. Eu, no entanto, tenho muita configuração na minha casa e gostaria de usar isso na escola. MAS também há algumas coisas importantes que acontecem em nosso cshrc, então eu gostaria de não alterar meu shell em cada login. Existe uma maneira de eu ligar ou executar o meu bashrc dentro do meu cshrc e obter os mesmos efeitos ou devo descobrir como traduzir o meu bashrc em cshrc? Eu não conheço uma ideia maluca - só estou acostumada a me esconder pessoalmente.

Obrigado por qualquer ajuda!

Editar: Eu decidi traduzir o meu cshrc em um bashrc para que eu possa usar bash ... Ick Csh - alguém tem entrada para traduzir isso?

Meu cshrc estou procurando trabalhar mais tarde hoje:

set defaultsdir=~defaults
# source ${defaultsdir}/linuxpaths
source ${HOME}/linuxpaths
# # add your custom shell commands here
# # see 'man tcsh' for more info
if ( $?prompt ) then
  set autoexpand
  set autolist
  set cdpath = ( ~ )
  set pushdtohome

  set savehist=10000
  set histfile=~/.history

# Load aliases from ~/.alias
  if ( -e ~/.alias )    source ~/.alias

endif
    
por jphenow 24.03.2011 / 15:23

3 respostas

2

Que tal acrescentar exec bash no final do seu .cshrc ?

Cuidado , porém, isso não é totalmente isento de riscos, então você pode querer fazê-lo em uma janela / sessão enquanto testa os resultados em outro, então você tem a chance de revertê-lo . (Ou tenha um administrador do site por perto).

    
por 24.03.2011 / 16:21
2

A maior parte desse .cshrc está incluindo arquivos externos (o comando source ) que você terá que traduzir também. A seção if ( $?prompt ) é executada apenas em shells interativos; você não precisa se preocupar com isso no bash. Alguns dos comandos set estão configurando opções de shell que não possuem equivalentes exatos; você pode querer ajustar as configurações de conclusão do bash. As poucas linhas que importam são:

set defaultsdir=~defaults                defaultsdir=~defaults
source ${HOME}/linuxpaths                . ~/linuxpaths.sh
set savehist=10000                       HISTSIZE=10000; HISTFILESIZE=$HISTSIZE
if ( -e ~/.alias ) source ~/.alias       . ~/.alias.sh

Não há nenhuma razão para você alterar seu ~/.cshrc , mas você pode querer alterar seu ~/.login para que os logins em modo texto deixem você no bash, ou até mesmo zsh, se estiver disponível. Use isso no final de ~/.login :

if ($?prompt != 0) then
  which bash >/dev/null >&/dev/null
  if ($status == 0) then
    setenv SHELL bash
    exec bash --login
  fi
endif
    
por 24.03.2011 / 21:17
1

Os arquivos .cshrc e .bashrc são gravados no próprio idioma do shell e os dois idiomas não são compatíveis. Além disso, as coisas que você normalmente coloca nesses arquivos são comandos para afetar o comportamento de inicialização do shell, portanto, executar um shell do outro só ajudará em um grau limitado.

Você precisará traduzir um dos arquivos para a outra sintaxe se quiser recursos do site .cshrc e da sua home .bashrc .

Se você preferir converter o site .cshrc para funcionar em Bash do que o contrário, você pode alternar seu shell permanentemente nessa máquina com este comando:

% chsh -s /bin/bash

A outra opção é traduzir sua home .bashrc para a sintaxe do shell C e adicioná-la ao arquivo .cshrc . Eu não recomendaria isso porque Programação Csh [é] considerada prejudicial . :)

    
por 24.03.2011 / 15:35