Bash别名:找不到命令

24

我正在尝试设置一个简单的别名,将我移动到我的机器上的Developer文件夹。然而,在设置之后,我会出现一个奇怪的错误:

-bash: dv: command not found

我在 .bashrc 中设置了我的别名,如下所示:

alias dv='cd Developer/'

我只需输入dv,就会出现这个错误。是否有人能看到别名中是否有语法错误或遗漏的东西?


2
你确定已经读取了.bashrc文件吗?在我的电脑上,.bashrc文件会被忽略,而是使用.profile文件。 - nneonneo
我并不100%确定,我可以尝试将其添加到我的.bash_profile中。编辑:这正是我想要的,如果您将评论移到答案中,我会接受它,谢谢! - Bill L
2
在Mac OS X中,终端仿真器启动登录shell而不是简单的交互式shell,因为终端仿真器本身通常不是从已经是登录shell的bash会话中启动的。 - chepner
8个回答

29

运行 bash,然后尝试该命令。

或者将其放置在 ~/.bash_profile 中,这样应该会自动加载。


1
不确定为什么你被投下了反对票,因为这样确实可以使它正常工作。是否有任何方法可以避免输入"bash",直接从一开始就正确读取文件?那真的是我更喜欢的方式。 - Bill L
我并不认为那是正确的。事实上,我非常确定.profile.bashrc只在启动 shell 时加载。 - nneonneo
3
手动运行命令时,最好重新加载点文件(dotfiles),而不是启动一个新的 shell 并让旧的 shell 继续运行。 - Charles Duffy
1
换句话说,使用 exec bash 命令来替换旧的 bash 实例为新的实例(需要注意这会清除该 shell 中的其他本地状态,如变量、定义的函数等),或者使用 source ~/.bashrc 命令在现有的 shell 中运行所有在 ~/.bashrc 文件中的命令。 - Charles Duffy
1
@nneonneo 正是因为这个原因,这些变量应该在.bash_profile中设置,而不是.bashrc中设置。.bashrc被任何(非登录)交互式shell调用;可以合理地预期,bash可能会在现有的bash会话中执行。 - chepner
显示剩余4条评论

14

.bashrc 只在启动时读取。如果你刚修改了你的.bashrc,那么你需要获取一个新的Shell或使你当前的Shell看到应用的变化:

  • 在你当前的Shell中使用source ~/.bashrc命令(虽然这可能会导致某些启动项运行两次,从而可能引起其他问题)
  • 使用exec bash获取一个新的Shell
  • 只需打开一个新的终端窗口

2
通常我会在我的配置文件中添加 [[ -f ~/.bashrc ]] && . ~/.bashrc - glenn jackman

8

错误:

-bash: alias: cd /opt/logs: 未找到 alias log="cd /opt/logs"

解决方案:

确保等号符号后面没有空格。

log="cd**  /opt/logs"

3

来自man bash:

       Aliases  are  not expanded when the shell is not interactive, unless the expand_aliases shell option is
       set using shopt (see the description of shopt under SHELL BUILTIN COMMANDS below).

如果您想在脚本中使用别名,请在脚本文件中添加以下行:

shopt -s expand_aliases

2

另一种解决方案是使用-i -c选项调用bash来执行您的命令:

bash -i -c my_alias

2
请确保以下代码行存在于.bash_profile中: test -f ~/.bashrc && . ~/.bashrc 如果不存在,请将其添加到开头。这段代码用于加载.bashrc,被.bash_profile使用。 如果这行代码不在.bash_profile中,那么您在.bashrc中输入的任何内容都不会被加载。

0

我遇到了同样的问题,但解决方式很奇怪。我将它从Windows机器复制到OS X上,由于某种原因使用的空格不同,当我用普通空格替换它们时,就解决了。并不是制表符,我不知道它是什么。


可能 https://dev59.com/iFkS5IYBdhLWcg3wu4rL - tripleee

0
我在创建mongoDB的别名时遇到了类似的问题; 您可以尝试将整个路径放置在主目录下的.bash_profile中,如下所示:

alias mongo="/c/Program\ Files/MongoDB/Server/5.0/bin/mongo.exe",

就像我自己的情况一样; 在此之后它完美地运行了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接