标签: path

将 bin 目录添加到我的路径中,无法使用“sudo 命令”执行其中的命令

bin在我的主文件夹中创建了一个目录,用于放置所有脚本。然后在我的 .bashrc 中我添加了以下内容:

export PATH=$PATH:/home/myusername/bin
Run Code Online (Sandbox Code Playgroud)

所以我可以从任何地方访问我放在那里的文件。但是有些脚本需要以 root 身份执行。所以我想,我可以将我的 .bashrc 符号链接为 root,(如 /root/.bashrc 指向 /home/myusername/.bashrc,不知道这是否聪明)所以当我需要以 root 身份运行脚本时我只能这样做:

sudo program_that_requires_root
Run Code Online (Sandbox Code Playgroud)

但后来我得到一个:

sudo: program_that_requires_root: command not found
Run Code Online (Sandbox Code Playgroud)

如果我以 root 身份登录并执行该程序,它可以正常工作。那么完成我想要的正确方法是什么?

root path bashrc

7
推荐指数
1
解决办法
8357
查看次数

正确处理 Python2 和 Python3

运行依赖于 python2.x 但在 python3.x 别名为 python 的系统上的脚本的正确方法是什么。

解决方案应考虑以下事项:

  • Python2 应该只用于那个 bash 运行
  • 随后运行的每个脚本也应该使用 Python2
  • 改变应该是暂时的

一种解决方案是临时创建别名并在完整路径的开头设置 Python2 的位置。

处理此问题的正确 (*nix) 方法是什么?

bash path python unix-philosophy

7
推荐指数
1
解决办法
925
查看次数

将目录添加到 SLES 11.1 中所有 shell 和用户的路径

我正在使用运行 Suse Enterprise 11.1 的服务器。我需要为所有用户和所有 shell 添加一些位置到路径中。有没有一种很好且简单的方法来做到这一点,或者我是否必须修改每个 shell 的配置文件。

另外我不知道这是否是 suse 的默认配置,或者是否有人把服务器搞砸了,但是没有 /etc/profile 也没有 /etc/shellnameprofile.local

我该如何存档?请帮忙。

shell suse path

7
推荐指数
1
解决办法
2万
查看次数

从 Linux 终端运行 python 脚本

我已经下载了这个名为 pyAES.py 的脚本,并将它放在我的 Linux 桌面目录中的文件夹名称代码中,

根据这个例子, http://brandon.sternefamily.net/2007/06/aes-tutorial-python-implementation/

当我打字时,

./pyAES.py -e testfile.txt -o testfile_encrypted.txt
Run Code Online (Sandbox Code Playgroud)

应该执行文件 pyAES.py。但我收到此错误,

pi@raspberrypi ~/Desktop/Codes $ pyAES.py
-bash: pyAES.py: command not found
Run Code Online (Sandbox Code Playgroud)

ls -l命令的输出是,

pi@raspberrypi ~/Desktop/Codes $ ls -l
total 16
-rw-r--r-- 1 pi pi 14536 Oct  8 10:44 pyAES.py
Run Code Online (Sandbox Code Playgroud)

这是之后的输出 chmod +x

pi@raspberrypi ~/Desktop/Codes $ chmod +x pyAES.py                              pi@raspberrypi ~/Desktop/Codes $
pi@raspberrypi ~/Desktop/Codes $ pyAES.py
-bash: pyAES.py: command not found
pi@raspberrypi ~/Desktop/Codes $
Run Code Online (Sandbox Code Playgroud)

和命令,chmod +x pyAES.py && ./pyAES.py给出以下错误,

-bash: ./pyAES.py: /usr/bin/python2: bad interpreter: No …
Run Code Online (Sandbox Code Playgroud)

path python executable shebang

7
推荐指数
1
解决办法
4万
查看次数

可执行文件的默认首选项优于同名的内置函数

我在玩一些可执行文件的名称,将它们放在一个文件夹中~/bin,该文件夹位于我的$PATH. 现在我想知道如何设置bash-3.2终端的首选项,以便它选择这些可执行文件而不是要执行的内置程序或别名。

例如,如果我将一个名为的脚本放在cd中的目录中$PATHcd则仍会执行内置的 for 。但是,如果我创建一个aliasfor cd,那么这个别名将被执行,覆盖内置函数。

$ type cd
cd is a shell builtin
Run Code Online (Sandbox Code Playgroud)

我的问题

  1. 有没有办法让可执行文件在$PATH默认情况下优先于内置的shell,只执行,例如cd,不必求助于使用命令builtincommand

  2. 我也对任何讨论这种偏好的官方参考资料感兴趣(不是我理解的推理)。

注意:这个问题纯粹是出于个人教育目的,我想知道为什么它会这样工作。

shell bash path shell-builtin

7
推荐指数
1
解决办法
480
查看次数

Sudo 更改 PATH,但执行相同的二进制文件

安装了两个 Python 解释器:

[user@localhost ~]$ /usr/bin/python -V && /usr/local/bin/python -V
Python 2.4.3
Python 2.7.6
Run Code Online (Sandbox Code Playgroud)

Sudo 在执行时更改 PATH:

[user@localhost ~]$ env | grep PATH && sudo env | grep PATH
PATH=/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/user/bin
PATH=/usr/bin:/bin
Run Code Online (Sandbox Code Playgroud)

然而,通过 sudo 运行 Python 与直接运行是一样的:

[user@localhost ~]$ sudo python -V && python -V
Python 2.7.6
Python 2.7.6
Run Code Online (Sandbox Code Playgroud)

我希望sudo python运行/usr/bin/python这是修改后的PATH. 为什么它会运行/usr/local/bin/python

我在 sudo-users 邮件列表上问了这个问题,但在与 sudo 维护者 Todd C. Miller 的讨论中我们找不到这种行为的原因。

以供参考:

[user@localhost ~]$ sudo -l
Matching Defaults entries for user …
Run Code Online (Sandbox Code Playgroud)

sudo path

7
推荐指数
1
解决办法
903
查看次数

在 .desktop EXEC 命令中获取当前路径

我试图让一个 .desktop 文件运行一个与 .desktop 存储在同一目录中的 .sh。整个目录需要可移植并在机器之间移动。

我的运行脚本是 run.sh

我试过了:

[Desktop Entry]
Type=Application
Terminal=true
Name=RunMe
#Exec=sh -c "`dirname %k`/run.sh"
#Exec=bash -c "export PATH=$PATH:`dirname %k`; bash run.sh;"
#Exec=bash -c "export PATH=$PATH:`dirname %k`; sh run.sh;"
Exec=bash -c "export PATH=$PATH:`dirname %k`; run.sh;"
Run Code Online (Sandbox Code Playgroud)

但是当我双击 .desktop 文件时没有任何反应。如果我双击“run.sh”并选择“run”,脚本运行良好。如果我使用 ' sh run.sh'从命令行运行脚本,它工作正常。

任何想法,甚至只是如何调试它实际试图运行的路径?

shell bash path .desktop

7
推荐指数
1
解决办法
9972
查看次数

编译器找不到头文件,是否将目录添加到PATH?

我正在尝试使用位于 的 gtk /usr/include/gtk-3.0/gtk/ ..,但工具包的所有头文件都有#include <gtk/gtk.h>.

除了添加/usr/local/gtk-3.0PATH或添加gtk-3.0到所有包含的预处理器,没有一个有什么其他的选择这个?

compiling make path header-file gtk

7
推荐指数
1
解决办法
1万
查看次数

将 PATH 添加到 .bashrc

我正在尝试在我的 Linux 机器上安装Anaconda。对或错,在他们说的说明的末尾

将此行添加到主目录中的 .bashrc 文件中:export PATH="/home/username/anaconda/bin:$PATH"

我不太了解 bash 中的 PATH 是如何工作的。但是,我的 .bashrc 文件中有另一个 PATH:

export PATH="/usr/local/share/rsi/idl/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)

我应该如何添加新路径?

bash path

7
推荐指数
1
解决办法
7万
查看次数

anaconda Qt 与系统 Qt

蟒蛇蟒蛇框架包括它自己的Qt的共享库,其他中。由于框架的性质,它必须首先出现在PATH环境变量中,因此它的 Python 二进制文件优先于系统的二进制文件。

当人们想将系统的 Qt 共享库用于与 python 无关的项目时,这会产生冲突。编译 Qt 项目时,它将使用qmake来自 anaconda的二进制文件及其共享库。

可以qmake通过将其路径添加到PATH变量来强制使用二进制文件,但这不适用于共享库。我尝试更改,LD_LIBRARY_PATH但它一直选择 anaconda 的。

我发现的“解决方案”:

  1. LD_PRELOAD:强制使用 Qt 共享库的 .so 使用系统库,方法是将它们一一添加到 LD_PRELOAD 环境变量中。这最终变得乏味和耗时。
  2. 与 Anaconda 混淆:按照此处的建议从 anaconda 中删除与 Qt 相关的所有内容。如果你想在 python 中开发 GUI 应用程序,这在未来看起来太脏而且容易出错。
  3. Anaconda Qt > System Qt:使用anaconda Qt 而不是系统Qt。这似乎是错误的职责分配。我与 python 无关的 Qt 项目不应该与我的 anaconda 安装耦合。它们应该彼此独立。
  4. 更改作案手法:而不必预先考虑到蟒蛇路径我所有的炮弹的PATH变量,有一个容易获得的脚本,它的预规划每当我需要它,建议在这里。问题是我习惯于让我的 python 二进制文件随时可用,并且当我在不知不觉中使用系统的 python 二进制文件时很容易出错。
  5. 移动 anaconda:临时移动 anaconda 文件夹,使其在路径中找不到。这是最快的,但在我使用完系统 Qt 库后,它太依赖我的记忆来修复所有问题。 …

path python dynamic-linking qt shared-library

7
推荐指数
1
解决办法
2388
查看次数