我正在使用一个名为 node-webkit 的程序,但是如果不指定可执行文件的完整路径,我将无法启动该程序。有什么方法可以将命令(例如node-webkit)与 Linux 上的可执行文件相关联,以便不需要指定文件的完整路径?
which -a ruby 给我
/usr/ruby
/usr/ruby
/usr/ruby
Run Code Online (Sandbox Code Playgroud)
它给出了三次相同的路径。为什么会发生这种情况?
我nix在我不是 root 的系统中以“单用户模式”使用(有关我的 nix 设置的描述,请参见下文)。
我想快速运行我的一个二进制文件,它与系统中不存在的库动态链接。
所以,我已经安装了库nix:
$ nix-env -qa 'gmp'
gmp-4.3.2
gmp-5.1.3
$ nix-env -i gmp-5.1.3
Run Code Online (Sandbox Code Playgroud)
但是链接器仍然找不到该库:
$ ldd -r ../valencies
../valencies: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by ../valencies)
../valencies: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ../valencies)
linux-vdso.so.1 => (0x00007fffbbf28000)
/usr/local/lib/libsnoopy.so (0x00007f4dcfbdc000)
libgmp.so.10 => not found
libffi.so.5 => /usr/lib64/libffi.so.5 (0x00007f4dcf9cc000)
libm.so.6 => /lib64/libm.so.6 (0x00007f4dcf748000)
librt.so.1 => /lib64/librt.so.1 (0x00007f4dcf540000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f4dcf33c000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4dcf11f000)
libc.so.6 => /lib64/libc.so.6 (0x00007f4dced8b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4dcfde7000)
undefined …Run Code Online (Sandbox Code Playgroud) 我需要运行一个脚本来访问它所在路径中的文件。
例如:我有脚本/home/me/folder/script.sh,这个脚本将访问文件/home/me/folder/myfile. 由于文件在脚本的同一路径中,我只使用 name myfile,而不是完整路径。
但是,如果我从 运行它/tmp/,例如:
/tmp$ /home/me/folder/script.sh
Run Code Online (Sandbox Code Playgroud)
它给了我:
myfile: No such file or directory
Run Code Online (Sandbox Code Playgroud)
那么,我如何在脚本中说该文件与脚本本身在同一路径中?
我有一个位于我生成的目录中的 unix 可执行文件。我相信我需要在我的目录中获取这个目录,$PATH以便 unix 可执行文件是可执行的,但是源代码的文档说我需要编辑我的 shell 配置文件以添加$home/meme/bin到我的 shell 路径中。
我想知道 linux 操作系统给出的标准环境变量如 PATH、HOME 是如何自动设置的。这些是从哪个文件中读取的。当特定用户登录时,应该有一些文件从中设置这些变量。
是否/etc/paths被我在 OS X 中运行的每个 shell读取?例如,如果我使用 zsh,它会解析/etc/path填充$PATH吗?
OS X 的填充顺序究竟是什么$PATH?它的做法与其他 Unices 有什么不同吗?
我知道寄存器 % 包含当前缓冲区的完整路径。但是如何通过其编号获得另一个缓冲区的完整路径?
VIM 中有这样的函数/命令吗?
我想解释一下我是如何想到这个问题的......
有 2 个缓冲区打开。第一个是左侧窗口中的 XML 文件,另一个是右侧窗口中的 XSD 文件。我编辑了他们两个。在编辑期间,我想根据架构验证 XML。
然而命令
!xmllint --schema /tmp/schema.xsd %
Run Code Online (Sandbox Code Playgroud)
当然,只有当当前缓冲区是带有 XML 的缓冲区时才能很好地工作。所以我很好奇是否可以/tmp/schema.xsd用一些命令或函数调用来替换,这些命令或函数调用将通过缓冲区编号确定完整路径。就像是:
!xmllint --schema getBufferPath(3) %
Run Code Online (Sandbox Code Playgroud) 我已经编译链接并在 C++ 中创建了一个程序,现在我有了
foobar.out
Run Code Online (Sandbox Code Playgroud)
我希望能够将它放入 bin 目录并像系统范围的命令一样使用它,例如
ssh, echo, bash, cd...
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我已将 LaTeX 添加到 PATH 变量,但当我将 shell 配置传输到多台计算机时,并非所有计算机上都安装了 LaTeX。除了无法访问软件的明显后果之外,当系统上不存在 PATH 变量所引用的软件时,配置 PATH 变量是否还会产生任何其他负面影响?
我的 .zshenv 文件:
# TeX Live
export PATH=$PATH:/usr/local/texlive/2023/bin/x86_64-linux
Run Code Online (Sandbox Code Playgroud)