python - 有没有办法创建带有参数的符号链接(symbolic link)? (Linux)

标签 python linux bash shared-libraries symlink

我想用将其作为 ld.so 参数调用的快捷方式替换 python(符号链接(symbolic link)): 例如

/home/user/my_libc_env/lib/x86_64-linux-gnu/ld-2.17.so /home/user/anaconda2/envs/tf_011g/bin/python2.7

而不是(默认)

/home/user/anaconda2/envs/tf_011g/bin/python2.7

注意事项:

  1. 我需要它作为链接而不是别名,因为我的 IDE 调试器 (pycharm) 显式调用该链接。

  2. 如果存在,它应该能够支持额外的命令行参数

仅使用 ln -s 是行不通的,因为它不接受参数。 我尝试将其包装为 bash 脚本,但效果不佳(在命令行中工作正常,但在从 IDE 调试器调用时出现 SegFault)

还有其他方法吗?

编辑(澄清): 这是我为 bash 脚本尝试的内容(从命令行可以正常工作,但从 IDE 调试器调用时会产生段错误)

#!/bin/bash
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-7.5/lib64:/usr/local/cuda-8.0/lib64/cuda/lib64:$HOME/my_libc_env/lib/x86_64-linux-gnu/:$HOME/my_libc_env/usr/lib64/:$HOME/my_libc_env/usr/lib/"  $HOME/my_libc_env/lib/x86_64-linux-gnu/ld-2.17.so $HOME/anaconda2/envs/tf_011g/bin/python2.7 "${@}"

最佳答案

您可以通过设置环境变量 LD_LIBRARY_PATH 的值来指定在哪里可以找到特定的共享库。该值是以冒号分隔的目录名称列表;在这种情况下,您想要预先设置一个特定的目录,以便首先检查它。

LD_LIBRARY_PATH=/home/user/my_libc_env/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH /home/user/anaconda2/envs/tf_011g/bin/python2.7

包装器脚本使这更简单,无需记住库路径或 Python 可执行文件的路径。

#!/bin/bash
export LD_LIBRARY_PATH=/home/user/my_libc_env/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH
/home/user/anaconda2/envs/tf_011g/bin/python2.7 "$@"

关于python - 有没有办法创建带有参数的符号链接(symbolic link)? (Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43031638/

相关文章:

python - 注册用户个人资料的正确方法是什么?

Linux 内核内存泄漏目前已修复

linux - GNU/Linux : who to add reply-to email address in/bin/mail command

linux - 将.net core 3.1 Web应用部署到Azure Linux应用服务

python - 为没有多对多关系的 friend 创建架构?

python - 从代码注入(inject)中传递给子进程的参数是否安全?

php - Laravel Command 输出的 Node 版本与命令行不同

linux - 如何将当前正在运行的 linux 进程置于后台?

python - 数据在 scikit-learn 转换器中不持久

bash - 如何使用 inotifywait 来查看文件夹中的文件而不是文件夹中的文件