在不接触bashrc的情况下创建新的Linux命令
我想编写一个shell脚本,允许我在bash终端中执行此操作:在不接触bashrc的情况下创建新的Linux命令,bash,Bash,我想编写一个shell脚本,允许我在bash终端中执行此操作: Mycommand[options][param]。 是否有任何方法可以让我的shell在不修改.bashrc的情况下识别Mycommand?(这里的目标是能够将脚本文件提供给某人,而他们不必向其路径添加任何内容,并且仍然能够按照所述使用它)定义shell别名。例如,以下别名称为x,它执行ls-alF*.py: $alias x=“ls-alF*.py” 为了定义或使用shell别名,无需编写任何文件 现在,您可以在shell中定
Mycommand[options][param]
。
是否有任何方法可以让我的shell在不修改.bashrc的情况下识别Mycommand?(这里的目标是能够将脚本文件提供给某人,而他们不必向其路径添加任何内容,并且仍然能够按照所述使用它)定义shell别名。例如,以下别名称为
x
,它执行ls-alF*.py
:
$alias x=“ls-alF*.py”
为了定义或使用shell别名,无需编写任何文件
现在,您可以在shell中定义别名的shell提示符中键入x
,它将返回Python源文件的详细列表
$alias x=“ls-alF*.py”
$x
-rwxr-x 1 mslinn mslinn 653 Feb 19 17:19 django-admin.py*
-RWXR-x 1 mslinn mslinn 1675 2020年9月19日jp.py*
-RWXR-x 1 mslinn mslinn 594 2020年9月19日rst2html.py*
-RWXR-x 1 mslinn mslinn 6413 2020年9月19日wsdump.py*
如果希望能够指定要列出的文件的模式,请不要将其包含在别名中。例如:
$alias y=“ls-alF”
$y*.md
-rw-rw-r--1 mslinn mslinn 606 11月17日20:31 README.md
您甚至可以定义默认参数,并添加更多:
$alias z=“ls-a”
$z-lF*.md
-rw-rw-r--1 mslinn mslinn 606 11月17日20:31 README.md
他们可以从保存脚本的目录运行脚本:
cd dir/with/script
./script.sh
或
如果脚本保存在用户家中的bin目录中。您的脚本可以调用同一文件夹中的脚本,以便向bash会话添加别名并为脚本创建要运行的变量,这将在bash会话期间可用。一旦结束此bash会话,别名和变量,创建的脚本将丢失。将该脚本放在路径中的某个位置,并使其可执行。但这正是我想要避免的,我只想将脚本文件交给某人,他们将能够使用它,如问题中所述,不必将它添加到他们的路径中,就无法绕过它,必须位于
路径中。有几个目录通常会抛出特定于用户的脚本:~/bin
或~/.local/bin
就是一个例子。一个非解决方案是将当前目录添加到路径:虽然它会启用您想要执行的操作,但它会带来严重的安全问题(而且您必须修改路径
)。为用户提供脚本。如果他们想执行它,他们可以给出它放在哪里的完整路径。如果他们不想给出完整的路径,他们可以把它放在已经在他们路径中的目录中。配置他们的环境取决于他们。
~/bin/script.sh