如何使 bash 别名可用作 Linux 命令?

如何使 bash 别名可用作 Linux 命令?

我在远程位置有许多 bash 别名。
但当我尝试从本地 Linux 机器运行它们时,
我收到“未找到命令”错误。例如

$ ssh root@remote 'status'  
bash: status: command not found

在远程位置,状态定义为

$ alias status='ls /tmp/status'  

如何在远程位置声明别名,
以便可以从任何位置调用它?

答案1

查看回答回答 Server Fault 上的类似问题。基本上,除非明确配置为这样做 ( ),否则 bash 不会在非交互式 shell 中扩展别名shopt -s expand_aliases。此外,您必须确保.bashrc即使在非交互式 shell 中也会对其进行评估。

答案2

你可以运行

ssh root@remote_mc 'bash -ic status'

以交互模式运行 shell 的另一个副本(这意味着它将从 bash 配置文件中加载别名)

启动第二个 shell 并不是一个很好的解决方案,但是它确实有效。

答案3

在我看来,如果您想创建许多别名,最好的解决方案是:

  • .bash_aliases您的/home/"user_name"
  • 在此文件中,您必须放入要在终端中使用的所有别名。例如,我的是:

别名 ll='ls -l'

别名 la='ls -A'

别名 mydu='du -s * .[^.]* | sort -n'

别名 apti='sudo apt-get install'

别名 aptr='sudo apt-get remove'

别名 aptu='sudo apt-get update'

别名 aptg='sudo apt-get upgrade'

别名 down='sudo ifconfig wlan0 down'

别名 up='sudo ifconfig wlan0 up'

别名 managed='sudo iwconfig wlan0 模式管理'

别名监视器 = 'sudo iwconfig wlan0 模式监视器'

别名 usb ='sudo mount /dev/sdc1 /mnt'

  • 在您的/home/"user_name"/.bashrc文件中,输入以下几行:
# ~/.bash_aliases 中的更多别名定义

如果 [ -f ~/.bash_aliases ]; 则 . ~/.bash_aliases fi

我把这一行放在文件的末尾,只是为了清楚起见。

相关内容