.bash_profile中的别名无法正常工作

时间:2015-02-03 00:04:47

标签: macos bash terminal .bash-profile

我一直在尝试更改我的根目录中的.bash_profile,但是遇到了一些问题。我在Macbook Pro上的OS X,Yosemite上。据我所知,.bash_profile文件包含每当打开终端应用程序并启动bash shell时自动调用的脚本。 这就是我目前在该文件中写的内容:

PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH

这完全没问题。但是,我想添加一个别名(在上面的两行下面),如下所示:

alias test='cd ..'

但是,当我保存并启动终端时,我收到以下消息:

-bash: alias: ..": not found

用双引号替换单引号并没有帮助,也没有完全取消它们。但奇怪的是,以下别名有效:

alias c=clear

当我在终端中键入c时,它会清除屏幕,正如您所期望的那样。但是,如果我在bash配置文件中使用引号输入此行:

alias c='clear'

每当我进入终端时,我都会得到以下信息:

-bash: 'clear': command not found

请注意,我在启动时没有收到此别名的错误消息。

我做错了什么?是否有一个设置我需要在某处更改以使别名正常工作?我之前看过别名的例子,它们根本不适用于我。

10 个答案:

答案 0 :(得分:17)

听起来好像shell在通过终端登录时没有访问.bash_profile。

.bash_profile是bash shell的配置文件。当bash shell启动时,shell将执行.bash_profile中的命令。但是有很多种shell,不同的shell执行不同的配置文件。

终端是一个接收用户输入的软件,shell将执行命令。您可以使用cat /etc/shell列出可接受的shell。例如:

$ cat /etc/shell /bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh

默认shell是Mac OX上的bash shell。但是如果你已经安装了zsh,那么默认的shell是zsh,当zsh shell启动时,shell会找到名为.zshrc的文件,并执行.zshrc中的命令。

您可以使用echo $SHELL使用:

$ echo $SHELL /bin/bash

-> echo $SHELL /bin/zsh

如果您的默认shell是zsh,则.bash_profile将不再起作用。 zsh的配置文件是.zshrc。我想你的问题是你的默认shell不是bash shell。例如,如果你的默认shell是zsh,你应该配置`.zshrc`,只需添加

PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}" export PATH

~/.zshrc的其他配置。

然后source ~/.zshrc,配置将立即生效。

答案 1 :(得分:8)

对我而言,它在同一个终端无效。我不得不打开一个新的工作。

答案 2 :(得分:7)

用双引号包装命令对我有用。我正在尝试这个线程中提到的每种可能的方式,但没有一个工作。然后我将单引号替换为双引号,并且有效。

    alias mysql_start="sudo /path/to/server/mysql.server start"

答案 3 :(得分:4)

对我而言,杀手是空间和单引号。 alias test =“cd ..”工作。 不要在alias_name =

之间放置任何空格

答案 4 :(得分:3)

用户级“系统”文件需要包含“纯文本”。如何为“选择编辑器”设置/配置它可能会有所不同(我不使用Mac,所以我对此没什么帮助。)Soo,

  1. 通过直接附加行来创建“来自shell”的个人资料,即删除“坏行”然后:

    echo“some command string”>> 〜/路径/ .bash_profile中

  2. 使用'vi'或'vim'##应为'安全'

  3. 通过以下方式审核您的文件:

    cat -v~ / path / bash_profle |更多##看到任何'有趣的字符'?或
    cat -ve~ / path / bash_profle |更多##看到任何'有趣的字符'?或

  4. vi ~/path/bash_profle # then set 'control codes' to 'on'
    set list ## see any 'funny chars' for your 'quotes'?
    

答案 5 :(得分:1)

你可以在〜/ .bash_profile或〜/ .alias_file中运行别名自定义自动启动...如果使用bash则粘贴文件名别名〜/ .bashrc如果使用zsh则运行〜/ .zshrc。

例如:

if [ -s ~/.bash_profile ]; then
    source ~/.bash_profile;
fi

答案 6 :(得分:0)

我通过在vim或nano中编辑我的.bash_profile来解决这个问题。有关文本编辑的内容搞砸了,不知道为什么。

我尝试使用"打开.bash_profile"在记事本中编辑。然而关于符号翻译错误的东西。所以你必须要么" vim .bash_profile"或者" nano .bash_profile"

这样做对我来说纠正了这个问题。

答案 7 :(得分:0)

我意识到Mac可以选择智能引号和破折号。 alias ..='cd ../'alias ..=‘cd ../‘不同,前者有效,后者无效。

答案 8 :(得分:0)

确保别名命令也位于.bash_profile中。那是我的错。

此外,如果您仅在终端中输入别名,它应该列出所有已知的别名命令,因此,如果您看不到您的命令,则说明出了问题。

答案 9 :(得分:0)

如果无法识别别名,请在打开终端或命令行提示符echo $SHELL时首先确定正在使用的Shell。对我来说是 / bin / bash ,所以我将在~/.bash_profile

中输入别名

请注意,文件〜/ .bash_profile可以存储两个别名以在终端会话期间调出,并在打开终端会话时自动运行相同的别名。下面的示例将打开一个文件,以便通过 vim-software 通过文本进行编辑。您可以根据需要将其更改为其他 text-editors 。您可以通过闭包方法看到差异。

ALIAS召集(使用括号

  • 别名editbp =“ vim〜/ .bash_profile”

ALIAS AUTORUN(使用tilda

  • 别名editbp = `vim ~/.bash_profile`