Linux创建全局命令,该命令立即将用户带到某些目录



当用户在命令行apps中键入并按Enter:我希望它立即将用户带到某个目录,例如/var/foo/bar

起初,我以为我可以使用一个符号链接来完成此操作,但是我意识到这是行不通的,因为它不是全局。

当我说"全局"一词时,我的意思是:无论用户当前使用什么目录:它始终将用户移至/var/foo/bar目录。

我将如何做到这一点?

您可以为相应的cd命令创建一个别名:

alias apps="cd /var/foo/bar"

有两种主要方法来实现。

1。使用外壳别名

输入您的外壳:

$ alias apps="cd ~/applications"

从现在开始,在此特定的外壳会话上,键入apps并按Enter将运行cd并将您带到applications~是您的主目录)。

请注意,这里, apps不是程序,只是别名,shell识别并重新插入的名称。

要使上述永久定义的别名,您应该将该行添加到 shell配置文件。这是一个位于已知路径的文件,每次打开新外壳时都可以运行。这些文件可能存在之一(~是您的主目录):

~/.bashrc
~/.bash_profile
~/.profile

因此,如果您在底部添加alias命令,则将在所有新终端上使用。

2。写一个新程序

编辑:有趣的是,这对您的情况不起作用。程序无法更改外壳的当前目录。不过,这仍然是如何创建程序的一个很好的摘要。将其用于其他东西

创建完成特定任务的新程序非常简单,但是需要一些习惯。我们可以以3个步骤进行操作。

1-在您的主目录中打开一个名为 apps的文件,然后将其放入:

#!/bin/bash
cd ~/applications # or whatever directory you want

文件的第一行称为a hashbang ,它表示应使用bash执行此程序,就像您的命令行一样。唯一的另一行是您的bash命令更改目录。

将其保存在~/apps

2-通过运行:

使文件可执行
$ chmod +x ~/apps

3-最后,将此程序放入您的PATH中。PATH是包含程序的目录列表。您的PATH中已经有一些目录:

$ echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin

要使您的程序可用于系统中的所有用户,请将其移至/usr/bin

$ sudo mv ~/apps /usr/bin/apps

如果您不能sudo,您仍然可以通过将您控制的目录添加到PATH

$ mkdir ~/bin
$ PATH="$PATH:~/bin"

第二个命令将PATH扩展到包括~/bin。就像我为alias解释的那样,您可以通过将其放入bash配置文件中永久性。

现在,将程序移至新的bin目录:

$ mv ~/apps ~/bin/apps

您应该能够键入apps,然后按Enter立即执行您的程序。

最新更新