首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未能修改.bashrc

未能修改.bashrc
EN

Stack Overflow用户
提问于 2014-01-24 20:25:35
回答 4查看 1.9K关注 0票数 2

我的.bashrc文件包含:

代码语言:javascript
复制
# mkdir, cd into it
function mkcd () 
{
    mkdir -p "$*"
    cd "$*"
}

当我在shell中输入mkcd时,就会得到mkcd: Command not found。当我输入source ~/.bashrc时,会得到一个错误:

Badly placed ()'s.

顺便说一下,我的文本编辑器(emacs)正在将代码识别为Shell-script[tcsh]

我该怎么解决这个问题?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-01-24 20:31:32

如果您可以接受必须将要创建的目录的名称作为第一个参数传递的限制,则应该如下所示:

代码语言:javascript
复制
# mkdir, cd into it
function mkcd () 
{
    mkdir -p "$@"
    cd "$1"
}

您需要运行source ~/.bashrc才能让它正常工作(或者启动一个新的shell)。

票数 2
EN

Stack Overflow用户

发布于 2014-01-24 23:25:05

关于这一职能的三项评论。这主要是可行的。要抓到几个角落的箱子:

  1. 可以使用function mkcd { ...; }mkcd() { ...; }。第一种方法与ksh兼容,但前提是必须删除()mkcd()表示法是标准的POSIX符号。
  2. 即使mkdir -p也可能失败,所以将cd作为mkdir的条件。
  3. 最后,您需要mkdircd的一个参数。只使用一个参数,并在参数替换中使用:?修饰符测试它是否有一个值。这将阻止函数向您发送$HOME

合起来:

代码语言:javascript
复制
function mkcd
{
    mkdir -p "${1:?}" && cd "${1}"
}

将其放入您的.bashrc并打开一个新的shell。type mkcd型这应以下列方式作出反应:

mkcd is a function,然后是它的定义。

票数 2
EN

Stack Overflow用户

发布于 2014-01-24 21:29:41

我在bash 4.2.45和Linux3.8.0上运行了mkcd函数,它正常工作。在新窗口登录或运行

代码语言:javascript
复制
source ~/.bashrc 

在您现有的窗口中应该为您定义函数。如果它不起作用,您将收到如下错误消息:

代码语言:javascript
复制
mkcd: command not found

虽然hek2mgl的建议不是使它工作所必需的,但它确实使它更有意义,因为您只需要将cd转到一个目录。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21341841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档