如何在OSX的.bash_profile中引用外部文件?

4

我在.bash_profile文件中定义了一些别名,现在这些别名能够正常工作,例如:

alias python-server="python -m SimpleHTTPServer 7070"

当我打开新终端并键入python-server时,会在当前目录下(或“/”)开启一个以当前目录为根目录的Python服务器。

但是我有大约10个别名,并且我想备份这些别名。因此,我想创建一个包含这些别名的外部文件,并尝试从.bash_profile中源化该文件,如下所示:

source ~/personal/Dropbox/scripts/aliases.sh

但是当我打开新的终端时,我会收到错误信息。
Last login: Fri Dec 11 23:16:28 on ttys004
: No such file or directory
: command not found
: command not found

然而,我的命令运行良好。例如,从外部文件启动python-server的表现如预期。我只是想知道这个错误的原因,并且可能有更好的方法来达成此目标。

.bash_profile的内容

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm

# Load aliases
source ~/personal/repo/scripts/aliases

PATH=$PATH:$HOME/personal/repo/scripts/commands
PATH=$PATH:$HOME/personal/repo/scripts/git
export PATH

别名文件的内容

#!/bin/bash

# ---------------
# Load my aliases
# ---------------
alias python-server="python -m SimpleHTTPServer 7070"

PS:现在,我已经从别名文件中删除了注释,并且当打开新终端时,: command not found 的计数从 2 减少到 1


@Mods 这个问题应该移动到 Unix StackExchange 网站吗? - Sachin Jain
当您尝试手动运行它时,它能正常工作吗?(与“.bash_profile”中所写的完全相同) - Yaron
@Yaron 是的,当手动运行命令时,它们可以正常工作。但是每次打开新终端时,我会看到如上所述的日志。 - Sachin Jain
1个回答

4

请将文件中的“控制字符”(例如“\r”)去除。

检查方法:

  cat ~/.bashprofile  | od -c ## see any '\r's?

使用'vi'或'vim'编辑文件或使用'tr'进行清洁,即:
tr -d '\r' ~/.bashprofile > ~/.bashprofile.mod  
cp ~/.bashprofile.mod ~/.bashprofile

感谢@Dale提供的提示。实际上,我在Mac上使用sublime text创建了文件,它添加了控制代码。由于有两行内容,我逐行复制文件内容,并将其粘贴到vim中的新文件中。后来删除了原始文件并将新文件重命名,这对我起作用了。顺便说一下,你的tr命令出现了错误。 - Sachin Jain
错误:tr: extra operand aliases.sh Only one string may be given when deleting without squeezing repeats. 请修复此问题,以便我可以接受。 - Sachin Jain
I.e. == '例如'; 它并不意味着绝对的答案;我无法“修复”因为我不使用MAC(在我的Linux系统上运行良好...);无论我的回答是否有帮助;对于非绝对问题/问题的绝对答案是胡言乱语;我并不真的在乎你是否接受 - 只要承认你的问题已解决(也许其他人会更快地找到解决方案),我们都向前迈进.... :) - Dale_Reagan
1
我也在ubuntu 12.10 64位上尝试了相同的命令,但出现了错误。是的,你的建议帮助我解决了这个问题,但我认为你的示例中还有一些缺失。不管怎样,还是非常感谢你! - Sachin Jain
1
这不是关于你是否在意答案被接受,而是为了未来的读者,因为他们可能正在尝试同样的事情并寻求答案。无论如何,我已经接受了你的建议,因为它只是一个方向而不是确切的命令。 - Sachin Jain

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