我正在尝试创建一个别名,并添加了此行~/.bash_aliases
:
alias server-python='open http://localhost:8000 && python -m SimpleHTTPServer'
alias ssh-saad='ssh saad@<my-server>' <my-server>
被我的服务器的 IP 地址替换。因此在我的~/.bashrc
文件中,这些行被取消注释
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
在我的~/.profile
:
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
我相信只要我启动终端,我的别名就会起作用。但是,除非我运行命令,否则source ~/.bash_aliases
它不起作用。此外,对于第一个别server-python
名,我收到一个错误:
Couldn't get a file descriptor referring to the console
我在这里研究了这些解决方案:
如何建立永久的“别名”?
Ubuntu 别名未在 bashrc 中应用
但仍然无法正常工作。如果有人能指出我做错了什么,我将不胜感激。我知道这个问题很简单,但我肯定漏掉了什么。
我现在已经修复了错误
Couldn't get a file descriptor referring to the console
通过使用sensible-browser
而不是open
:
alias server-python='sensible-browser http://localhost:8000 && python -m SimpleHTTPServer'
答案1
我终于找到了一个适合这个问题的解决方案。如果有一个~/.bash_login
文件并且它不为空,那么~/.bashrc
当我们打开 shell 时,文件不会自动加载。如果我们移动它~/.bash_login
mv ~/.bash_login ~/.bash_login_old
然后~/.bashrc
文件将被加载,并且~/.bash_aliases
如果文件中以下行未被注释,它也会加载该文件~/.bashrc
。
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
我能想到的另一个解决方案是,如果您不想重命名或删除文件,~/.bash_login
那么您可以在 shell 中输入此命令bash
,它就会加载该~/.bashrc
文件。
答案2
ubuntu 中的“open”被/bin/open
描述为open -h
“这个实用程序帮助您在新的虚拟终端(VT)上启动一个程序。”
比 sensible-browser 更通用的东西是gnome-open
,它默认没有安装(不再安装了?),而是由 libgnome2-bin 提供的:
$ sudo-apt-get install libgnome2-bin
$ gnome-open https://google.com # opens https://google.com in default browser
$ gnome-open config.txt # opens config.txt in gedit
我发现 gnome open 非常有用,因此我在我的(多站点)bashrc 中有以下内容:
if which gnome-open >/dev/null ; then
alias o=gnome-open
elif which kde-open >/dev/null ; then
alias o=kde-open
elif which xdg-open >/dev/null ; then
alias o=xdg-open
fi
这将允许您执行以下操作:
alias server-python="o http://localhost:8000 && python -m SimpleHTTPServer"
并且它能在大多数地方发挥作用。