Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不接触bashrc的情况下创建新的Linux命令_Bash - Fatal编程技术网

在不接触bashrc的情况下创建新的Linux命令

在不接触bashrc的情况下创建新的Linux命令,bash,Bash,我想编写一个shell脚本,允许我在bash终端中执行此操作: Mycommand[options][param]。 是否有任何方法可以让我的shell在不修改.bashrc的情况下识别Mycommand?(这里的目标是能够将脚本文件提供给某人,而他们不必向其路径添加任何内容,并且仍然能够按照所述使用它)定义shell别名。例如,以下别名称为x,它执行ls-alF*.py: $alias x=“ls-alF*.py” 为了定义或使用shell别名,无需编写任何文件 现在,您可以在shell中定

我想编写一个shell脚本,允许我在bash终端中执行此操作:
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