perl脚本 linux,linux – 通过Perl脚本设置环境变量
您當前的腳本甚至不會更改Perl腳本本身的環境變量.相反,它調用shell作為子進程; shell進程執行. /root/.profile,僅在該shell進程中更新$LD_LIBRARY_PATH.
您可以通過更新%ENV來更改Perl腳本中的環境變量(更確切地說,在運行Perl腳本的過程中):
$ENV{LD_LIBRARY_PATH} = '/'; # or some more reasonable value
正如perldoc -v%ENV所說:
%ENV The hash %ENV contains your current environment. Setting a value in “ENV” changes the environment for any child processes you subsequently “fork()” off.
但那可能仍然不會做你想要的;它不會(也不會)影響調用Perl腳本(您的交互式shell)的進程的環境,只會影響Perl進程本身及其調用的任何內容.
我假設您要在當前的交互式shell進程中更新$LD_LIBRARY_PATH.為此,您可以讓Perl腳本打印一個將更新$LD_LIBRARY_PATH的shell命令.然后,您可以執行它,然后評估其輸出,而不是簡單地運行Perl腳本.例如:
$cat env.pl
#!/usr/bin/perl
use strict;
use warnings;
print "export LD_LIBRARY_PATH=/\n";
$./env.pl # just prints the command without executing it
export LD_LIBRARY_PATH=/
$eval $(./env.pl) # executes the command in the current shell
$echo $LD_LIBRARY_PATH
/
$
這假設您當前的shell是bash或類似的東西.
另一種選擇:修改%ENV后,您的Perl腳本可以調用另一個命令,甚至是新的交互式shell.新進程將從Perl腳本繼承其環境.但這可能有點麻煩;例如,如果新進程是交互式shell,則它不會從父shell繼承未導出的變量或歷史記錄.
(一個注意事項,與您的問題沒有直接關系:您正在使用/root/.profile這一事實意味著您正在以root身份執行操作(超級用戶).這可能很危險.使用root帳戶(通過記錄進入它或通過sudo僅用于實際需要root權限的東西.對于其他任何東西,使用個人用戶帳戶.
總結
以上是生活随笔為你收集整理的perl脚本 linux,linux – 通过Perl脚本设置环境变量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [vue] vue为什么要求组件模板只能
- 下一篇: linux执行perl脚本,如何从Per