我注意到我的路径环境变量有我家的二进制文件的路径$HOME/bin。
我没有将$HOME/bin目录添加到路径环境变量中,那么如何$HOME/bin添加到路径中?
RE- “可能重复”:
这个问题特定于环境变量“PATH”,并且进一步特定于如何将特定值(即)$HOME/bin附加到环境变量。
“可能的重复”:
PATH问题或答案中没有提及环境变量$HOME/bin问题或答案中任何地方的任何内容我正在设置一个全新的 Ubuntu 16.04 Minimal 系统,但遇到了一个奇怪的问题。即使添加$HOME/bin到后$PATH,bash似乎也找不到其中的任何脚本,至少对于root.
我已经退出好几次了,甚至重新启动过一次机器。/etc/profile.d该路径由:中的一行脚本设置export PATH="$PATH:$HOME/bin"。
root@Pioneer ~ # echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/bin
root@Pioneer ~ # ls -la /root/bin
total 36
drwxr-xr-x 2 root root 4096 Feb 6 16:04 .
drwx------ 8 root root 4096 Feb 6 16:03 ..
-rwxr-xr-x 1 root root 174 Jan 5 2017 newuser
-rwxr-xr-x 1 root root 236 Nov 3 2015 own
-rwxr-xr-x 1 root root 87 May 6 2017 re-dns
-rwxr-xr-x 1 …Run Code Online (Sandbox Code Playgroud) 我在我的主目录中本地安装了一堆应用程序。为了使它们在全球范围内可用,我将它们添加PATH到.bashrc:
PATH="$PATH:/home/user/apps/app1/bin"
PATH="$PATH:/home/user/apps/app2/bin"
PATH="$PATH:/home/user/apps/appn/bin"
Run Code Online (Sandbox Code Playgroud)
我该如何设置才能不必添加每个新的?我正在尝试这个,但它不起作用:
PATH="$PATH:/home/user/apps/*/bin"
Run Code Online (Sandbox Code Playgroud)
注意:我知道我可以用循环添加它们,但我也担心我的PATH变量会变得太大,我想知道是否可以以某种方式使用通配符。
在这里我找到了带有名称的文件..:;。mkdir '..:;'工作得很好。但在 PATH 中,目录名称由:. 如何将该目录添加到PATH?
为了快速移动,我添加了一个指向 CDPATH 的路径,其中包含指向不同位置的符号链接。我通过将以下行添加到 .bashrc 来做到这一点:
export CDPATH=~/symlinks
Run Code Online (Sandbox Code Playgroud)
使用目录时,一切正常,我可以从任何地方访问符号链接文件夹。
例如,如果我这样做:
$ ln -s ~/path/to/folder ~/symlinks/folder
Run Code Online (Sandbox Code Playgroud)
然后我可以写:
$ cd folder
Run Code Online (Sandbox Code Playgroud)
进入符号链接文件夹,无论我当前的目录如何。
但是,当我创建一个文件的符号链接,然后尝试使用编辑器打开它时,我会得到一个空文件,除非我在符号链接目录中。
例如,如果我这样做:
$ ln -s ~/path/to/file/filename ~/symlinks/filename
Run Code Online (Sandbox Code Playgroud)
然后写:
$ kwrite filename
Run Code Online (Sandbox Code Playgroud)
如果我不在符号链接文件夹中,我会得到一个空文件。
我想从任何地方访问该文件,我该如何实现?
我正在运行 FreeBSD 9.1-RELEASE。我已经安装了 GNU grep portmaster textproc/gnugrep。
然而,用户的“默认”grep 仍然是 FreeBSD grep。
# /usr/local/bin/grep -V
/usr/local/bin/grep (GNU grep) 2.12
# grep -V
grep (GNU grep) 2.5.1-FreeBSD
Run Code Online (Sandbox Code Playgroud)
我想让 GNU grep 成为默认值。我知道问题在于我的PATH环境变量中指定的目录顺序:
# echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin
Run Code Online (Sandbox Code Playgroud)
但是,我害怕将/usr/local/bin条目移动到我的PATH. 安全吗?
在像 Debian 这样的 Linux 发行版中,此类任务通常通过dpkg-divert和/或update-alternatives.
在 FreeBSD 中做我想做的事情而不破坏系统升级等的最佳方法是什么?
我使用的是 OSX Mountain Lion 10.8.2
$echo $PATH 打印这个:
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/Users/myusername/.rvm/bin
Run Code Online (Sandbox Code Playgroud)
我注释掉一切~/.bash_profile,并~/.bashrc并重新启动计算机,但在最后一部分$PATH变量(/Users/myusername/.rvm/bin)不会消失。
如何找出最后一部分添加到我的$PATH变量的位置?
我pkg-config用来帮助在 C++ 编译期间提供正确的库。据我了解,它会在/etc/ld.so.conf. 我ld.so.conf通过指向的包含指令引用了以下库位置/etc/ld.so.conf.d/*.conf:
/usr/local/lib
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
Run Code Online (Sandbox Code Playgroud)
问题是我需要的库在/usr/lib默认情况下。
我可以将这条路径添加到/etc/ld.so.conf自己或移动库或推荐的做法是什么?
我在 Unix 中的预定义位置有两个 Perl 脚本。此预定义位置在路径变量 ( $PATH) 中设置。现在,当我尝试运行第一个脚本(从任何位置)时,该脚本成功运行,而第二个脚本(与前一个脚本的路径相同)会引发错误提示
ScriptB: Command not found
Run Code Online (Sandbox Code Playgroud)
我的 shell 是 tcsh 并且授予两个脚本的权限是相同的。
这种错误行为的可能原因是什么?
我必须在目录及其子目录中找到某种类型的文件,我只需要打印出文件名。所以这是主要命令:
find -type f -name "*.c"
现在,我怎么能从每个结果中切出路径?(它可能可以用 awk 来完成,但我希望有一种更简单的方法来做到这一点)。