在 Ubuntu 16.04 中创建别名来捕捉包的正确方法是什么?

Pio*_*ski 8 command-line bash alias snap

TL; 博士

如何在 Ubuntu 16.04 中创建系统范围的别名来捕捉包?

更多细节

我想快速安装 Blender。我发现,有可以安装的Blender-tpaw包。不幸的是,安装它后,它可以在终端中使用 name blender-tpaw,而不是blender.

使用快照别名

所以首先我尝试运行命令sudo snap alias blender-tpaw blender,根据:https : //insights.ubuntu.com/2017/01/28/ubuntu-core-how-to-enable-aliases-for-your-snaps-commands / . 但这就是我所拥有的:

error: cannot perform the following tasks:
- Enable aliases for snap "blender-tpaw" (cannot enable alias "blender" for "blender-tpaw", no such alias)
Run Code Online (Sandbox Code Playgroud)

在 /usr/local/bin 中创建符号链接

然后我尝试建立符号链接,sudo ln -s /snap/bin/blender-tpaw /usr/local/bin/blender但在这种情况下发生了非常奇怪的事情:现在当我输入blender终端时,我得到了snap命令的输出......

将别名放在 /etc/profile.d 中

我也试过在 /etc/profile.d/alias.sh

alias blender='blender-tpaw'
Run Code Online (Sandbox Code Playgroud)

但这仅适用于我的 Ubuntu 16.04 服务器,但不适用于 Ubuntu 16.04 桌面。

我想达到什么目标?

我希望这个别名对于所有用户都是系统范围的,而无需.bashrc分别为每个用户手动更改。我希望以同样的方式在 Ubuntu Server 和 Ubuntu Desktop 上工作。

dpb*_*dpb 3

去年尝试注册别名时遇到的任何问题现在似乎都已解决。相同的序列适用于 16.04,以及即将发布的 18.04。版本使用在输出中。

$ sudo snap install blender-tpaw
[sudo] password for dpb: 
blender-tpaw 2.78c-tpaw0 from 'tpaw' installed
$ sudo snap alias blender-tpaw blender
Added:
  - blender-tpaw as blender
$ sudo snap aliases
Command                  Alias         Notes
aws-cli.aws              aws           -
blender-tpaw             blender       manual
conjure-up.conjure-down  conjure-down  -
lxd.lxc                  lxc           -
$ snap version
snap    2.32.3.2+18.04
snapd   2.32.3.2+18.04
series  16
ubuntu  18.04
kernel  4.15.0-15-generic
Run Code Online (Sandbox Code Playgroud)

参考:


des*_*ert 0

snap要使用 bash 内置函数在外部设置别名alias,您需要显式调用snap,因此在您的情况下,命令是:

alias blender='snap run blender-tpaw'
Run Code Online (Sandbox Code Playgroud)

man bash说:

当启动非登录 shell 的交互式 shell 时,bash 将从 /etc/bash.bashrc 和 ~/.bashrc 读取并执行命令(如果这些文件存在)。

因此,要使别名在系统范围内可用,只需将其添加到/etc/bash.bashrc文件中即可:

echo "alias blender='snap run blender-tpaw'" >> /etc/bash.bashrc
Run Code Online (Sandbox Code Playgroud)