当用户键入命令行apps
并按Enter键时:我希望它立即将用户带到某个目录,如/var/foo/bar
。
起初我以为我可以用符号链接做到这一点,但后来我意识到它不会起作用,因为它不是全局的。
当我说术语" global"时,我的意思是:无论用户当前在哪个目录中:它总是将用户移动到/var/foo/bar
目录。
我怎么能这样做?
答案 0 :(得分:2)
您可以为相应的cd
命令创建别名:
alias apps="cd /var/foo/bar"
答案 1 :(得分:0)
实现这一目标有两种主要方式。
在shell中输入:
$ alias apps="cd ~/applications"
从现在开始,在此特定的shell会话中,键入apps
并按Enter键将运行cd
并转到applications
(~
是您的主目录)。
请注意, apps
不是程序,只是别名,即shell识别并重新解释的名称。
要使上面定义的别名永久化,您应该将该行添加到 shell配置文件。这是一个位于已知路径的文件,每次打开新shell时都会运行该文件。其中一个文件可能存在(~
是您的主目录):
~/.bashrc
~/.bash_profile
~/.profile
因此,如果您在底部添加alias
命令,它将在所有新终端上可用。
编辑:有趣的是,这不适用于您的情况。程序无法更改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键立即执行您的程序。