标签: path

仅导出单个文件

要从终端的任何地方访问脚本,可以使用以下命令序列:

PATH=$PATH:some_path_here
export PATH
Run Code Online (Sandbox Code Playgroud)

其中包括与所有子文件夹一起发送的路径中的所有文件。这意味着从那时起,只需键入存储在此文件夹结构中的脚本的名称即可执行它。

如何以这种方式仅导出单个文件而不是整个文件夹及其所有子目录?

shell bash path

6
推荐指数
2
解决办法
2474
查看次数

抑制路径中的变量扩展

如何防止 Zshell(和我假设的 Bash)在路径中扩展环境变量完成,如以下示例所示:

$PREFIX/alt/li
Run Code Online (Sandbox Code Playgroud)

应该扩展到

$PREFIX/alt/lib
Run Code Online (Sandbox Code Playgroud)

而不是说

/opt/alt/lib
Run Code Online (Sandbox Code Playgroud)

bash zsh path autocomplete environment-variables

6
推荐指数
1
解决办法
838
查看次数

如何在 debian 上为所有用户的非登录 shell 和登录 shell 添加系统 $PATH 的路径

我在/opt/my-program/bin 中安装了一些程序,我想为所有用户的非登录shell 和登录shell 添加/opt/my-program/bin 到系统$PATH。我该怎么办?

更改 /etc/environment 对于非登录 shell 是可以的,但它不适用于登录 shell,因为 Debian 的 /etc/profile(将由登录 shell 提供)将覆盖 /etc/environment 中指定的 $PATH。

debian path environment-variables

6
推荐指数
2
解决办法
5594
查看次数

全局 /etc/profile setenv 或导出覆盖 .profile 中的用户设置

我需要在 CentOS 5.3 集群中调用程序的修改版本/home/user_name/bin而不是(旧)版本/opt/program_name/current。该程序使用 python 创建一个 tcsh 脚本,然后执行该脚本。

我可以覆盖 PATH 以在 中调用程序的修改版本~/bin,以便which program_name标识到~/bin的路径。我已经在这样做了.bashrc.profile.tcshrc,和.cshrc。但是,每次执行 tcsh 时,都会/etc/profile加载来自的环境变量,并且路径将恢复为/opt/program_name/current.

这些程序特定的变量在/etc/profile.d/program_name.sh被调用时设置/etc/profile

# /etc/profile 
for i in /etc/profile.d/*.sh ; do
    if [ -r "$i" ]; then
        . $i
    fi
done
unset i
Run Code Online (Sandbox Code Playgroud)

因此,当program_name.sh被调用时,对应的脚本是:

# /etc/profile.d/program_name.sh
setenv PATH ${PATH}:/opt/program_name/current
Run Code Online (Sandbox Code Playgroud)

如何防止/etc/profile被我的用户帐户访问?

我没有 su 访问权限,其他用户仍在使用旧版本的软件,/opt/program_name/current因此我无法更新软件或修改其中的设置/etc/profile.d/program_name.sh

tcsh centos path shell-script

6
推荐指数
1
解决办法
4762
查看次数


为什么没有使用 $PATH 中的第一个可执行文件?

我有一个调用的脚本jsl/usr/local/bin。运行which jsl在那里找到它。

我想暂时使用一个不同的版本,当echo $PATH我看到它/usr/bin在路径的早期。所以我添加了一个jsl在该文件夹中调用的脚本,并且我已经验证它是可执行的并且在使用完整路径调用时可以正确运行。

但是,which jsl仍然找到第一个版本,并且jsl仍然运行它。

为什么我的新人jsl没有which被姓名发现或被处决?

path

6
推荐指数
1
解决办法
337
查看次数

如何在 CentOS 中安装自定义 boost 版本?

我正在尝试从 CentOS 中的源代码编译和安装boost 1.54。

文档非常简单,互联网上有很多教程 ( 1 ) ( 2 ) ( 3 )。这就是我所做的:

wget http://sourceforge.net/projects/boost/files/boost/1.54.0/boost_1_54_0.tar.gz
tar -xzvf boost_1_54_0.tar.gz
cd boost_1_54_0
./bootstrap.sh --prefix=/usr/local
./b2 install --with=all
Run Code Online (Sandbox Code Playgroud)

这是正确编译和安装boost /usr/local/lib,一切看起来都很好。

现在我编译其他需要使用 boost 的软件,gcc一切正常。根据我的理解,只要gcc找到所需的库,一切都应该没问题。

但现在的问题是:如果我运行我编译的二进制文件,我会收到以下错误:

./myProgram
  ./myProgramm: error while loading shared libraries: libboost_system.so.1.54.0: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

为什么找不到库?

另外我试过:

ldconfig
locate boost
  [...]
Run Code Online (Sandbox Code Playgroud)

但是找不到boost库。我手动寻找路径,它是:

/usr/local/lib/libboost_system.so.1.54.0
Run Code Online (Sandbox Code Playgroud)

我也尝试创建符号链接,/usr/lib但这也不能解决这个问题。

有任何想法吗?我能做什么?

libraries path dependencies software-installation boost

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

如何在 AIX 5 或更高版本上使用其 PID 识别可执行路径

在 AIX 5 或 6 上,`ps -ef` 随机显示可执行文件的完整路径。为什么?以及如何确定?

我在 Internet 上以及 Unix 和 Linux 上发现了许多线程,以及有关查找进程路径的堆栈溢出帖子,到目前为止,我还没有成功应用任何方法。
我一直陷入proftpd展示而不是拥有一条道路。我终于阅读了man psAIX 并发现了这一点:

CMD

(-f、-l 和 l 标志)包含命令名称。在 -f 标志下,ps 尝试确定当前的命令名称和参数,这两者都可能被进程异步更改。然后显示这些。否则,将在没有选项 -f 的情况下显示的命令名称写在方括号中。

当我有以下输出时,我想确保理解这意味着什么:

 ps -ef (truncate output)
root 44900     1   0 11:49:36      -  0:00 proftpd: (accepting connections)
nobody 31986 14976   0   13 feb      -  0:00 /usr/local/apache/bin/httpd -f /usr/local/apache/conf/httpd.conf
Run Code Online (Sandbox Code Playgroud)

对于httpd守护程序,它确实显示完整路径,但不显示proftpd. 第一个问题是为什么有些进程显示完整路径而有些没有?

第二个问题是针对这种情况的:

我可以假设 的路径proftpd是第一个我会发现输入whereis为的路径root吗?

就我而言:

 whereis proftpd
 proftpd: /etc/proftpd.conf …
Run Code Online (Sandbox Code Playgroud)

ps path aix

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

将同一父目录下的多个子目录添加到PATH

我已经安装了一些工具并将其放在 $HOME/tools/ 下,每个工具都有自己的 /bin 目录,其中包含可执行程序。我现在在 $HOME/.bashrc 文件中有每个单独的 /bin 的路径,如下所示:

export PATH=$PATH:$HOME/tools/tool1/bin
export PATH=$PATH:$HOME/tools/tool2/bin
...
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以为所有工具编写以下内容?

export PATH=$PATH:$HOME/tools
Run Code Online (Sandbox Code Playgroud)

如果它不起作用,那么最好的方法是什么?

path

6
推荐指数
1
解决办法
3433
查看次数

选择要使用的默认二进制文件

这是来自的输出which -a autoconf

/usr/bin/autoconf
/usr/bin/autoconf
/home/amumu/root/bin/autoconf
Run Code Online (Sandbox Code Playgroud)

我想在我的主目录中使用 autoconf,因为与服务器中的默认版本相比,它是较新的版本。如何将其设置为默认值?我不想覆盖/usr/bin/autoconf或写入/usr/local/bin

shell path

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