如何做到这一点,以便仅在控制台中键入其名称就可以运行特定程序?


17

我刚刚安装了Light Table,并从git存储库下载了它,并按照此网站上的说明创建了桌面启动器。

现在我想通过直接在终端中输入来运行程序

LightTable

并不是

./opt/LightTable/deploy/LightTable

6
@ user68186将包含目录添加到PATH环境变量通常不是实现此目的的最佳方法,并且有时甚至会破坏系统或创建安全漏洞。(必须考虑到会变成命令从此任何其他可执行文件,以及地方PATH它的添加。)添加壳别名,所涵盖的答案在这里,是更好的人谁不想考虑这种复杂性; 它也可以针对特定的应用程序进行更严格的定制。因此,尽管它们确实有点重叠,但这不是该问题的重复。
伊利亚·卡根

相关(但不一定是重复的):如何在目录中添加目录?
赛斯2014年

Answers:


20

可以使用别名粗略地完成此操作。您可以通过在.bashrc文件中添加一行来创建永久的bash别名。

在终端运行 nano ~/.bashrc

在底部添加以下行:

alias LightTable='/full/path/opt/LightTable/deploy/LightTable'

注意,我添加了完整路径而不是完整路径,.因此它将在任何工作目录中工作。关闭并重新打开终端,或运行source ~/.bashrc以重新加载bashrc文件。


7

这不是一个基本问题,最好的方法是创建一个别名,我以netbeans为例

开放终端 Ctrl+Alt+T

nano ~/.bashrc

将此写在文件底部:

alias netbeans='/home/john/netbeans-7.0.1/bin/netbeans'

Ctrl + x

Y

Enter

netbeans单词是您将用来启动程序的命令,您可以将其更改为所需的任何内容。引号内是要在调用netbeans别名时运行的命令。

为了使该命令有效,您必须重新打开终端


由于声誉
欠佳

5

如果可执行文件/usr/bin是简单的可执行程序且不依赖于任何其他文件,则可以尝试将其复制到。如果它确实依赖于其他文件,则最好的办法是为该程序创建一个快捷命令。

您可以自己创建别名(.bashrc,.profile等)。但是,我个人将所有环境变量都保存.bash_aliases文件中(您首先需要创建它)。

在您的HOME文件夹中创建文件.bash_aliases并根据需要进行编辑。然后创建快捷方式,您可以执行以下操作:

alias LightTable='path_to_opt/LightTable/deploy/LightTable'

保存文件,仅此而已。

ps:您也可以将别名分别设置为lighttable和LIGHTTABLE,以防忘记大写L或意外激活了大写锁定,因此不必再次键入命令。


由于声誉
欠佳

建议将没有通过Apt安装的东西放进去/usr/local/bin。在物联网/usr/bin可以被擦除或公寓包取代,但事情/usr/local/bin被单独留在家中。
Chai T. Rex

3

我不确定为什么其他答复者没有提出这个建议,但是正如OP实际指出的那样,在$PATH变量之前加上前缀是我实现此目的的方式:

echo 'PATH=/opt/LightTable/deploy:$PATH' >> ~/.bash_profile
source ~/.bash_profile

然后运行:

LightTable

注:我会又别名LightTablelighttable的易用性:echo 'alias LightTable=lighttable' >> ~/.bash_alias && source ~/.bash_alias
JoeNyland 2014年

2

创建一个符号链接比我认为的别名更好。当您不想使用别名时,可以在命令行上进行替换。创建一个符号链接将使您可以根据需要运行该程序:

sudo ln -s full_path_to_opt/LightTable/deploy/LightTable  /usr/local/bin

这将在/ usr / local / bin(应该已经在您的PATH中!)中创建一个指向LightTable实际位置的快捷方式。还请注意,如果您不喜欢“ LightTable”中的大写字母,也可以重命名符号链接:

sudo ln -s full_path_to_opt/LightTable/deploy/LightTable  /usr/local/bin/lighttable

仅供参考,如果程序设计笨拙,即抱怨找不到配置文件或库或其他内容,那么另一个可能更有用的解决方案是创建包装脚本。为此,只需在其中创建一个名为“ LightTable”(或您喜欢的其他文件)的文件(无论您何时喜欢):

#!/bin/sh
# Simple script to run LightTable
if ! cd full_path_to_opt/LightTable/deploy/LightTable ; then
    echo "$0: error: LightTable directory not found." >&2
    exit 1
fi
exec ./LightTable

更改此文件的权限:

chmod 755 <wrapper_script>

并尝试执行该命令以查看其是否有效,然后将其移至/ usr / local / bin:

sudo mv -i <wrapper_script> /usr/local/bin

你说的是真的,但是没有回答他想要的。他想通过使用文件名/文件别名来执行它
Johnn

1
@Johnn:对不起,我不知道有什么区别。我理解这个问题是在寻求一种无需指定路径即可执行程序的方法。如果您只是要求执行程序,则外壳程序使用别名还是PATH机制没有什么区别。如果您想对文件做其他事情,那么使用别名来提供文件的完整路径确实是最好的方法,但是他只是想运行文件。我错了吗?
Zorawar 2014年

不,那是我的错,您的正确。
约翰·

1
@Johnn:嗯,还是谢谢你的批评!
Zorawar 2014年

0

我在Ubuntu中启动时尝试这样做。将LightTable放入终端时,它将在$PATH目录中搜索名为LightTable的文件。您可以放入echo $PATH获取目录。

如果要在中执行LightTable程序./opt/LightTable/deploy/LightTable,则要做的是将Light Table文件放入,/usr/games or /usr/bin.但这需要超级用户权限

通过Ctrl + Alt + T打开终端

然后放

我更喜欢使用以下方式创建LightTable的快捷方式

sudo ln -s path/to/LightTable  /usr/games/LightTable

然后输入SU密码。然后,您可以通过LightTable在终端中使用来访问程序

您可以放一个目录,也可以放它/usr/bin/usr/local/bin而不是放/usr/games任何东西$PATH,它不必像这样,但是我建议您将它放在/usr/local/bin

我也建议您将输出文件更改lightpathLightPath

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.