ruby中的命令行参数可以擦除吗?

ruby中的命令行参数可以擦除吗?,ruby,unix,argv,Ruby,Unix,Argv,出于安全原因,我希望在解析命令行参数后删除它们: login.rb --user me --password wombats 我试过ARGV.clear和$*.clear 对ARGV或$*的更改都不会反映在ps中您可以通过更改$PROGRAM\u name变量来更改Ruby进程的名称(如ps(1)所示)。下面是一个有意循环的示例程序,例如: #!/usr/bin/env ruby puts $PROGRAM_NAME $PROGRAM_NAME = "a ruby process" loo

出于安全原因,我希望在解析命令行参数后删除它们:

login.rb --user me --password wombats
我试过ARGV.clear和$*.clear


对ARGV或$*的更改都不会反映在ps中您可以通过更改
$PROGRAM\u name
变量来更改Ruby进程的名称(如
ps(1)
所示)。下面是一个有意循环的示例程序,例如:

#!/usr/bin/env ruby

puts $PROGRAM_NAME
$PROGRAM_NAME = "a ruby process"

loop { }
当它像这样运行时:

$ ./loop.rb password
./loop.rb
它在
ps
中显示了“一个ruby进程”:

$ ps aux | grep ruby
stuart         85292  98.9  0.1  2439468   4340 s004  R+    8:43PM   0:02.96 a ruby process  
stuart         85341   0.0  0.0  2432768    600 s011  S+    8:43PM   0:00.00 grep --color ruby

因此,您可以使用
$PROGRAM\u NAME
变量通过
ps

更改流程的显示方式,我在下面提供了一个可能的答案,尽管另一种方法是根本不接受命令行上的密码,而是通过
STDIN
提示用户输入密码。登录后清除终端是否足够?如果是这样,您可以在解析命令行参数后使用
system'clear'
。某些系统允许您删除命令行参数。可以在运行时重命名
$PROGRAM\u NAME
全局并尝试愚弄
ps
,但该命令将保留在历史缓冲区中。如果使用<代码> SUDO ,将跟踪这些命令。您可以考虑改变问题的想法,例如提供文件名或路径,其中存储密码,并读取,而不是直接从命令行提供。这将保持历史记录不变,但不会公开密码。当然,应该采取正常的文件权限预防措施。