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

时间:2016-12-05 22:00:40

标签: linux unix

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

起初我以为我可以用符号链接做到这一点,但后来我意识到它不会起作用,因为它不是全局的。

当我说术语" global"时,我的意思是:无论用户当前在哪个目录中:它总是将用户移动到/var/foo/bar目录。

我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

实现这一目标有两种主要方式。

1。使用shell别名

在shell中输入:

$ alias apps="cd ~/applications"

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

请注意, apps不是程序,只是别名,即shell识别并重新解释的名称。

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

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

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

2。写一个新程序

编辑:有趣的是,这不适用于您的情况。程序无法更改shell的当前目录。不过,这仍然是如何创建程序的一个很好的总结。将它用于别的东西

创建新程序来完成特定任务非常简单,但需要一些时间来适应。我们可以分3个步骤完成。

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

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

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

将其保存在~/apps

2-运行以下命令使文件可执行:

$ chmod +x ~/apps

3-最后,将此程序放在PATH中。 PATH是shell的包含程序的目录列表。您已在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键立即执行您的程序。