尝试在 Ubuntu 12.10 中创建别名,但是不起作用

尝试在 Ubuntu 12.10 中创建别名,但是不起作用

我正在尝试创建一个别名,并添加了此行~/.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"

并且它能在大多数地方发挥作用。

相关内容