用于常见脚本的非 sudo 替代 /usr/local/bin

用于常见脚本的非 sudo 替代 /usr/local/bin

我习惯于放入常用脚本,/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。

答案1

我有什么选择?是否有另一条具有相同“从任何地方运行”功能的路径,我无需 sudo 即可访问,或者有其他方法可以实现相同的功能?

怎么做?

在您的主目录中创建一些目录来保存您的脚本,通常以bin约定俗成的方式命名。

mkdir ~/bin

现在将脚本移至 bin

mv somescript ~/bin

现在如何让它从任何地方调谐?!

您必须将其添加bin到 PATH

打开你的.bashrc

gedit .bashrc

并添加以下行:

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

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

保存并退出,然后 source 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

答案2

此外https://askubuntu.com/a/643030/218015你也可以在 .bashrc 中为一些小的、经常使用的任务定义一个别名。例如

alias ll='ls -l'
alias ls='ls --color=auto'

将为您创建一个“命令” ll,该命令执行 ls -l,并且在定义别名后 ls 将被着色。https://wiki.ubuntuusers.de/alias还有更多示例和设置方法。

答案3

尝试~/.local/bin/

(我承认这个答案没有增加任何新内容,但这个问题有一个简短的答案,不需要阅读其他所有内容。)

答案4

确实应该有一个每个用户的 bin,因为它在多用户环境中非常有用,在这种环境中,人们被拒绝 root 权限,以使每个人都更安全。在 bash 脚本中使用以下内容可自动创建它。

if [ ! -d "$HOME/.local/bin" ] ; then
  mkdir -p "$HOME/.local/bin"
  printf '\nexport "PATH=$PATH:'"$HOME"/.local/bin'"' >> "$HOME/.bashrc"
  # Change the PATH right now:
  PATH="$PATH:$HOME/.local/bin"
fi

相关内容