cshrc 在其内部执行 bashrc?

cshrc 在其内部执行 bashrc?

我的学校默认使用 csh/tcsh 的 Linux 帐户。然而,我在家里的 bashrc 上有很多设置,我想在学校使用它。但是我们的 cshrc 中也发生了一些重要的事情,所以我不想在每次登录时更改我的 shell。有没有办法让我在 cshrc 中调用或执行 bashrc 并获得相同的效果,或者我应该找出如何将 bashrc 转换为 cshrc?我不知道这个想法有多疯狂——我个人只是真正习惯了 bashrc。

谢谢你的帮助!

编辑:我决定将我的 cshrc 转换为 bashrc,这样我就可以使用 bash... Ick Csh - 有人对翻译这个有意见吗?

我希望今天晚些时候可以使用我的 cshrc:

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

答案1

exec bash在你的末尾添加怎么样.cshrc

谨防不过,这并非完全没有风险,因此您可能希望在一个窗口/会话中执行此操作,同时在另一个窗口/会话中测试结果,这样您就有机会恢复它。 (或者附近有网站管理员)。

答案2

其中大部分.cshrc包括source您也必须翻译的外部文件(命令)。该if ( $?prompt )部分仅在交互式 shell 中执行;在 bash 中你不必担心这一点。一些set命令正在设置没有完全相同的 shell 选项;您可能需要调整 bash 完成设置。重要的几行是:

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

您没有理由更改您的~/.cshrc,但您可能希望更改您的~/.login,以便文本模式登录使您进入 bash ,甚至 zsh (如果可用)。在末尾使用它~/.login

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

答案3

.cshrc和文件.bashrc是用 shell 本身的语言编写的,两种语言不兼容。此外,您通常放入这些文件中的内容是影响 shell 启动行为的命令,因此从一个 shell 运行另一个 shell 只会在有限程度上有所帮助。

.cshrc如果您想要网站和您的主页的功能,则必须将其中一个文件转换为另一种语法.bashrc

如果您希望将站点转换.cshrc为在 Bash 下工作而不是相反,则可以使用以下命令在该计算机上永久切换 shell:

% chsh -s /bin/bash

另一个选项是将您的 home 转换.bashrc为 C shell 语法并将其添加到.cshrc文件中。我不会推荐这个,因为Csh 编程被认为是有害的。 :)

相关内容