我的学校默认使用 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 编程被认为是有害的。 :)