我需要帮助加载内置platform_check脚本的软件。我的计划是创建一个名为uname的脚本,该脚本在执行时将打印一个可接受的平台。该脚本按我的需要运行,但我不知道如何使用uname命令来搜索我的自定义uname脚本,而不是/bin/uname默认值。我试过使用PATH,类似于PATH=~//path_to_uname:$path这不起作用。我没有root访问权限,所以我不能在默认位置编辑/创建uname。
当我像这样执行脚本时:exec/directory_to_uname和/directory_to_uname/uname-r两者都按我的意愿工作——我只需要欺骗shell来寻找我的自定义uname。
您可以尝试使用别名来trick
外壳。例如(使用bash(编辑~/.bashrc并添加alias uname='path/to/uname uname'
。执行source ~/.bashrc
,命令uname将从alias中获取一个。如果将其更改为alias uname='ls -lha'
,并在执行uname
时加载(源命令(,它将列出文件/dir。
假设您有一个平台检查脚本正在调用uname,那么我们将其称为test.sh:
#!/bin/bash
uname
初始运行显示uname如预期:
user@computer:~$ ./test.sh
Linux
将uname作为bash函数导出到echo
中您想要用于欺骗的内容:
user@computer:~$ function uname {
> echo "hello"
> }
user@computer:~$ export -f uname
user@computer:~$ ./test.sh
hello
为了知道在命令期间访问/使用哪些文件,可以使用strace
命令:
strace -y uname
你会得到一大堆使用的文件和流程,你可能会看到是否有可以适应你的需求。
然而,这是非常危险的(谁知道可能会有什么副作用?(因此,我建议您为uname
命令创建和alias
。