相关疑难解决方法(0)

在 shell 脚本中找出用户的默认 shell

我想知道是否有办法在 shell 脚本中找出当前用户的默认 shell?

用例:我正在编写一个为命令设置别名的脚本,这个别名是在 shell 脚本中设置的。

!# /bin/bash
alias = 'some command to set the alias'
Run Code Online (Sandbox Code Playgroud)

脚本中有一个逻辑,它尝试查找执行脚本的用户的默认 shell 并将此别名添加到相应的 ~/.bashrc 或 ~/.zshrc 文件中

但是当我在脚本前面添加一个shebang并明确要求它使用bash时,这里发布的答案总是按预期返回bash,尽管我是在ZSH终端上执行这个脚本的。

有没有办法获取执行脚本的 shell 类型,而不管 shebang 设置如何?

我正在寻找一种适用于 Mac 和所有基于 linux 的小酒馆的解决方案。

shell configuration

19
推荐指数
3
解决办法
3万
查看次数

$ find -exec cd => 给出错误:=> find: 'cd': No such file or directory

当我运行此命令时,它可以工作:

$ find . -inum 888696 -exec ls '{}' \;
Conversation.pst  Outlook Data File  Outlook Data File.sbd  Trash      Unsent Messages
Inbox.pst     Outlook Data File.msf  Sent.pst       Trash.msf  Unsent Messages.msf
Run Code Online (Sandbox Code Playgroud)

然而,当更换lscd工作:

$ find . -inum 888696 -exec cd '{}' \;
find: ‘cd’: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我知道cd是一个bash内置的,所以我想这里面确实没有任何工作:

$ find . -inum 888696 -exec builtin cd '{}' \;
find: ‘builtin’: No such file or directory
Run Code Online (Sandbox Code Playgroud)

如何cdfind -exec …

bash find cd-command

8
推荐指数
4
解决办法
3600
查看次数

更改目录的符号链接仅适用于主目录

使用答案,我在我的.bashrc文件中创建了一个符号链接,以便更轻松地更改到常用目录。

例如

ln -s ~/a/b/c/d/development dev
Run Code Online (Sandbox Code Playgroud)

我可以通过输入将目录从我的home目录更改为目录。我也可以从我的目录进入,这也有效。developmentcd devls devhome

但是,这些命令适用于我的home目录。如果我从其他任何地方输入它们,我会收到一个错误提示No such file or directory

如果我输入cd ~/devls ~/dev它有效。

有人可以解释为什么会这样以及我如何解决它,这样~/当我不在我的家庭目录中时,我就不必包含在路径中。

bash cd-command symlink

5
推荐指数
2
解决办法
1861
查看次数

Perl 脚本,在终端上执行 cd

更改当前目录的脚本 (cd, pwd) 中 ,展示了如何运行更改终端目录的 bash 脚本。

但是我如何运行一个 perl 脚本来运行一个改变终端目录的 bash 脚本?

bash terminal cd-command perl

3
推荐指数
2
解决办法
8465
查看次数

标签 统计

bash ×3

cd-command ×3

configuration ×1

find ×1

perl ×1

shell ×1

symlink ×1

terminal ×1