非sudo替代/ usr / local / bin的通用脚本


16

我习惯于放置通用脚本,/usr/local/bin以便可以在终端的任何位置执行它们。

例如,我制作了一个名为的shell脚本1,使其与一起执行chmod +x 1并放入/usr/local/bin,然后在#!/bin/sh第一行中键入的脚本内,然后是我的命令。从那里开始,它非常方便使用并且可以通过键入快速执行

1Enter

在终端上的任何文件夹中

我的问题是我当前正在无法执行的计算机上工作,sudo而且我也无法期望得到它,因此我无法将脚本放在中/usr/local/bin

我有什么选择?是否存在另一条具有相同“从任何地方运行”功能的路径,而我无需使用它也可以访问该路径sudo,或者是否可以通过另一种方式获得等效的效果?

这个帖子的公认答案说

对于用户范围内的脚本,请在主目录中使用bin /。

我尝试过,但是bin主目录中没有文件夹,创建文件夹时,仍然无法从其他任何位置运行脚本。

我在Ubuntu 12.04 LTS上运行。


2
不要使用1或类似的名称作为脚本名称。尝试在您的shell中计算某些内容:例如expr 1 + 1(如果没有,则肯定会在某些时候执行某些脚本)
frlan 2015年

1
@frlan:expr 1 + 1名为的脚本会如何影响1
psmears

是的...没有影响expr,也不是bash算术$(( 1 + 1 ))
坎帕2015年

Answers:


19

我有什么选择?是否存在另一条具有相同“从任何地方运行”功能的路径,而我无需使用sudo即可访问该路径,或者是否可以通过另一种方式获得等效的结果?

怎么做?

在家里创建一些目录,以存放通常以bin惯例命名的脚本。

mkdir ~/bin

现在将您的脚本移至bin

mv somescript ~/bin

现在如何使其无处不在?!

您必须将添加bin到PATH

打开你的 .bashrc

gedit .bashrc

并添加以下行:

export PATH=$PATH:/home/username/bin

不要忘记username用您的用户名替换

保存并退出,然后获取bashrc

source .bashrc

现在您就可以运行脚本了!但您必须注意,这仅与您的用户有关。

注意:最好将脚本重命名为1,2以外的名称,因为使用该名称可能会遇到一些问题


更新:

您可以执行同样的操作,只需在家里创建bin目录,然后source ~/.profile代替~/.bashrc。由于将〜/ bin添加到PATH中已在.profile

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

我使用过,export PATH=$PATH:$HOME/bin因此我可以将相同的bashrc用于具有不同用户名的其他帐户。
安东尼G-莫妮卡的正义

1
值得一提的~/bin 是,$PATHUbuntu默认情况下处于启用状态。source ~/.profile创建目录后,只需运行或注销/登录即可。
Jacob Vlijm

@JacobVlijm在哪个版本中?!我使用12.04、14.04、15.04,但它们都不在PATH中有〜/ bin
Maythux

所有这些答案中,我一直都使用它,在我的许多(接受的)答案中也从未使用过它,也从未对此发表任何评论,她也可以在五个系统上在家工作,但是如上所述,在运行之后source ~/.profile。参见(例如)此处:askubuntu.com/a/247422/72216
Jacob Vlijm

1
他说出处~/.profile,他从不说出处 ~/.bashrc :)另外,一般来说,环境变量应该输入.profile而不是.bashrc因为只需要设置一次就可以。(这并不是说您的回答不好,请注意,并向我+1)
terdon 2015年

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.